Vue中Axios发起接口请求出现跨域问题:has been blocked by CORS policy

本文介绍了如何处理浏览器的CORS政策导致的跨域问题。在前端,可以通过在vue.config.js中设置代理,伪装请求来规避跨域限制。在后端,虽然也可以配置允许跨域,但实际操作中可能较为复杂。提供了详细的前端代理配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

blocked by CORS policy:Access-Control-Allow-Origin通常指的就是浏览器判断请求跨域问题导致.

在这里插入图片描述

解决方案:

1.前端设置代理的方式:

在vue.config.js的配置文件中,配置代理伪装请求的方式,解决跨域:
详细配置和配置属性解释,见代码注释

devServer: {
  port: 9999,
  // open: true,
  // 设置代理
  proxy: {  //配置跨域
        '/api': {
        target: 'https://www.baidu.com/',  //这里后台的地址模拟的;应该填写你们真实的后台接口
        ws: true,
        changOrigin: true,  //允许跨域
        pathRewrite: {
        "^/api": "" //这里理解成用'/api'代替target里面的地址,比如我要用'https://www.baidu.com/user/add',直接写'/api/user/add'即可
                }
            }
        },
  overlay: {
    warnings: false,
    errors: true
  }
},

2.后端设置:

据说后端可以配置,允许跨域访问,该方式未尝试,一般对接别人的api也很少可能叫动其该后端程序配置,后端程序可能需要考虑其他程序对接等.

参考:

后端跨域解决:from origin http://localhost:xxxx has been blocked by CORS policy 

### Vue项目中的CORS解决方案 对于Vue项目中遇到的CORS问题,主要在于浏览器的安全策略阻止了来自不同源的请求。当尝试从一个源获取资源而该资源位于另一个源时,就会触发此类错误。为了使这些请求成功完成,服务器端需正确配置响应头`Access-Control-Allow-Origin`[^1]。 #### 使用代理解决开发环境下的问题 在开发环境中,一种常见的做法是在`vue.config.js`文件内设置代理规则: ```javascript module.exports = { devServer: { proxy: 'http://localhost:8080' } } ``` 此方法使得所有API调用都被转发到指定地址,在本地测试期间有效规避了难题[^2]。 #### 配置后端服务支持CORS 如果采用Flask作为后端框架,则可通过安装并应用`flask-cors`库来处理这个问题。具体操作如下所示: 首先安装依赖包: ```bash pip install -U flask-cors ``` 接着修改应用程序入口处的相关代码片段: ```python from flask import Flask from flask_cors import CORS app = Flask(__name__) CORS(app, resources={"/api/*": {"origins": "http://example.com"}}) ``` 上述更改允许特定名下的页面发起对API接口请求,并且只针对路径前缀为`/api/`的部分生效[^4]。 #### 客户端调整预检请求参数 有时还需要确保客户端发送正确的预检(Preflight)请求参数,比如自定义头部字段或复杂的内容类型等情况下。此时可以在Axios实例初始化阶段加入额外选项: ```javascript import axios from 'axios'; const instance = axios.create({ baseURL: '/api', headers: {'Content-Type': 'application/json'}, }); export default instance; ``` 这样做有助于提高兼容性和稳定性,减少因不匹配而导致的失败概率[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值