从JsFiddle调用第三方API时出现CORS Header错误,寻求解决方法
问题分析与解决
问题出在哪
- 错误添加请求头:你在请求里加的
Access-Control-Allow-Origin: *完全无效,这个头是服务端在响应时返回给浏览器的,用来告知浏览器允许哪些域名发起跨域请求,客户端发送该请求头对解决CORS问题没有任何帮助。 - CORS跨域限制:
checkip.amazonaws.com的服务端未配置允许JsFiddle域名发起跨域请求,浏览器出于安全策略拦截了响应,这就是你看到的控制台错误。
解决方法
方案1:使用CORS代理
通过公共CORS代理转发请求,修改代码如下:
async function send() { try { // 借助CORS代理转发请求 const response = await axios.get('https://cors-anywhere.herokuapp.com/https://checkip.amazonaws.com/'); console.log("获取到的IP:", response.data.trim()); } catch (err) { console.log(err); } } send();
注:部分公共代理存在调用频率限制,长期使用建议自行搭建简单代理服务(比如用Node.js的express搭配cors中间件)。
方案2:本地测试禁用浏览器CORS限制
如果仅用于本地测试,可给浏览器添加禁用CORS的启动参数,比如Chrome的启动命令:
chrome.exe --disable-web-security --user-data-dir="C://ChromeDevSession"
该方法仅适合开发测试场景,不用于生产环境,日常浏览时不建议使用,会降低浏览器安全性。
内容的提问来源于stack exchange,提问作者mmb
相关产品推荐
相关产品推荐

