使用端口3333上的AdonisJs框架在Node.js中运行以下代码时,为什么下面的代码可以正常工作? 但是,如果我从我的React应用程序在componentWillMount的端口3000上运行它,则会收到错误
Failed to load https://jsonodds.com/api/odds/nfl: Response for preflight is invalid (redirect)
componentWillMount(){
axios.get("https://jsonodds.com/api/odds/nfl", {headers: {"X-Api-Key": "xxx"}})
.then(function (response) {
console.log(response)
})
.catch(function (error) {
console.log(error);
});
}
答案 0 :(得分:1)
Preflight请求是浏览器for implementing CORS发送的请求。
NodeJS不会发出预检请求,因为它不需要实现CORS。
Preflight请求是OPTIONS请求(因此不希望有响应正文),也不允许重定向。
要解决此问题,您需要正确配置API端,这样它就不会为OPTIONS请求返回重定向。
[UPD]如果您无法触摸API服务器,则可以实现自己的后端代理,该代理将从前端请求并在内部询问API服务器。将不会应用CORS(具有飞行前的限制),您的API密钥也会被保密