本地测试 axios.get(‘https://news.tust.edu.cn/’).then(response => { console.log(response) }) 请求跨域了 CORS error
时间: 2024-09-25 16:20:52 浏览: 45
Error:in ./node-modules/axios/lib/platform/index.js
本地测试中,当你通过`axios.get`向一个不在同源策略允许范围内的服务器发送GET请求(例如,新闻网站`https://news.tust.edu.cn/`),可能会遇到跨域资源共享(Cross-Origin Resource Sharing, CORS)错误。浏览器出于安全考虑,不允许网页直接访问其他源的内容,除非服务器明确地设置了允许跨域请求。
在`axios`中,跨域问题可以通过设置`withCredentials`选项或在服务器端配置CORS头来解决:
1. **在客户端(浏览器)**:
- 如果你需要发送包含身份凭证(cookies等)的请求,可以启用`withCredentials`属性:
```javascript
axios.get('https://news.tust.edu.cn/', { withCredentials: true })
.then(response => console.log(response))
.catch(error => console.error(error));
```
2. **在服务器端(如Node.js + Express)**:
- 你需要在响应头中添加`Access-Control-Allow-Origin`、`Access-Control-Allow-Credentials`等CORS头部,示例如下:
```javascript
app.options('*', (req, res) => {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE");
res.header("Access-Control-Allow-Headers", "Content-Type, Authorization");
res.header("Access-Control-Allow-Credentials", "true");
res.status(204).end();
});
```
或者针对具体的域名添加:
```javascript
res.header("Access-Control-Allow-Origin", "https://your-app.com");
```
请注意,如果服务器不允许跨域,上述设置将无效。在开发阶段,你也可以使用一些工具,如`http-server`或者本地代理(如`proxy-middleware`),在本地模拟跨域环境进行测试。
阅读全文