axiosaccess
时间: 2023-09-30 18:07:11 浏览: 143
Axios发送POST请求出现报错 "Access to XMLHttpRequest at 'http://xxxx' from origin 'http://localhost:9529' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource."
这个报错是由于跨域限制导致的。浏览器存在一种安全机制,即同源策略(Same-Origin Policy),限制了不同源之间的访问。当你在前端代码中向不同的域名发送请求时,如果服务器没有设置正确的CORS头部信息,就会出现这个报错。
解决这个问题的方法有几种。其中一种是在后端服务器的响应头中添加"Access-Control-Allow-Origin"字段,并设置为允许访问的域名。你可以在后端代码中添加如下代码:
```javascript
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "http://localhost:9529"); // 允许访问的域名
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
```
另外一种解决方法是使用代理。你可以在Vue项目的config目录下的index.js文件中配置proxyTable,将请求代理到后端的接口。具体操作如下:
```javascript
proxyTable: {
'/api': {
target: 'http://api.douban.com/v2', // 你请求的第三方接口
changeOrigin: true, // 在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
pathRewrite: { // 路径重写
'^/api': '' // 替换target中的请求地址,也就是说以后你在请求http://api.douban.com/v2/XXXXX这个地址的时候直接写成/api即可。
}
}
}
```
这样,在前端代码中请求接口时,将请求地址改为`/api`开头即可实现代理。例如,原本的请求地址为`http://api.douban.com/v2/XXXXX`,则改为`/api/XXXXX`。
希望以上解释对你有帮助。如果还有其他问题,请随时提问。
阅读全文