解决vue axios跨域请求2次问题

浏览器请求分为简单请求和复杂请求
在发起复杂请求且跨域的情况下会自动发起OPTIONS预检测请求

简单请求需满足以下两个条件否则为复杂请求
请求方法是以下三种方法之一:
HEAD、GET、POST
HTTP 的头信息不超出以下几种字段:
Accept、Accept-Language、Content-Language、Last-Event-ID、
Content-Type: 只限于 (application/x-www-form-urlencoded、multipart/form-data、text/plain)

#nginx 配置文件 server
add_header 'Access-Control-Allow-Origin' '*'; #允许跨域
add_header 'Access-Control-Allow-Credentials' "true"; #是否携带cookie
add_header 'Access-Control-Allow-Headers' 'X-Requested-With,token';#允许的header名称
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';#允许的请求方法
add_header 'Access-Control-Max-Age' 86400;#预检测请求的缓存时间另外浏览器控制面板的Disable cache不勾选才可生效
#nginx 伪静态 location
if ($request_method = 'OPTIONS') {#拦截预检测请求
   return 200; 
 }
Vue中使用axios进行跨域请求,你可以按照以下步骤操作: 1. 安装axios:在命令行中运行 `npm install axios`。 2. 创建一个API请求文件:在src目录下创建一个新的文件夹,比如 `api`,然后在该文件夹下创建一个名为 `index.js` 的文件。 3. 在 `index.js` 文件中导入axios并创建一个实例: ```javascript import axios from 'axios'; const instance = axios.create({ baseURL: 'http://api.example.com', // 设置你的API请求的基本URL timeout: 5000, // 设置请求超时时间 }); export default instance; ``` 4. 在你需要发送请求的组件中导入刚才创建的实例: ```javascript import api from '@/api/index.js'; // 然后使用api进行请求 api.get('/example') .then(response => { console.log(response.data); }) .catch(error => { console.error(error); }); ``` 5. 处理跨域问题:在Vue的配置文件 `vue.config.js` 中进行跨域配置。如果没有该文件,请在项目根目录下创建一个。 ```javascript module.exports = { devServer: { proxy: { '/api': { target: 'http://api.example.com', // 设置你的API请求的基本URL changeOrigin: true, pathRewrite: { '^/api': '', // 如果你的API路径有前缀,可以在这里进行替换 }, }, }, }, }; ``` 以上配置将所有以 `/api` 开头的请求代理到 `http://api.example.com`,并解决跨域问题。 这样就可以在Vue项目中使用axios进行跨域请求了。请注意,实际的API URL和路径需要根据你的项目和后端API进行相应的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值