axios.get('https://news.tust.edu.cn/').then(response => { console.log(response) }) 请求跨域了 CORS error
时间: 2024-09-25 08:20:45 浏览: 44
axios发起GET请求访问其他域名的数据时,如果目标服务器启用了CORS(Cross-Origin Resource Sharing,跨源资源共享),浏览器会根据同源策略检查这个请求是否被允许。当遇到跨域情况,浏览器通常会抛出CORS错误,如`Access-Control-Allow-Origin`头信息未包含请求来源或者权限设置不当。
在这个例子中:
```javascript
axios.get('https://news.tust.edu.cn/')
```
由于`https://news.tust.edu.cn/`与你的JavaScript运行环境(可能是localhost或非默认端口的开发环境)不是同一个源,浏览器出于安全考虑会阻止这个请求。要解决这个问题,你需要做以下几个尝试:
1. **服务器配置**: 如果你是服务提供者,可以在响应头添加`Access-Control-Allow-Origin`字段,指定允许的源(可以设置为*表示所有源,但不推荐,以防安全风险)。例如:
```http
Access-Control-Allow-Origin: *
```
2. **JSONP**: 对于老版本的浏览器支持,你可以试试JSONP,但这需要服务器端配合,因为它是通过script标签进行数据获取。
3. **代理**: 在开发环境中,你可以设置一个本地代理服务器(比如使用webpack-dev-server或proxy-middleware),将你的请求转发到目标API地址。
4. **CORS插件**(仅限于某些开发工具):有些开发者工具可能会提供跨域请求的支持,允许你在开发阶段绕过浏览器的CORS限制。
5. **使用CORS中间件**(针对Node.js后端):如果是后端开发,可以考虑使用像cors这样的中间件处理CORS请求。
如果你是客户端开发者并且无法控制服务器,那么在生产环境下,可能需要寻求其他解决方案,比如使用nginx等反向代理服务器处理跨域请求。
阅读全文