Axios api调用-加载失败,对预检的响应无效(重定向)

时间:2018-08-16 06:24:58

标签: javascript node.js reactjs axios

使用端口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);
        });

  }

1 个答案:

答案 0 :(得分:1)

Preflight请求是浏览器for implementing CORS发送的请求。

NodeJS不会发出预检请求,因为它不需要实现CORS。

Preflight请求是OPTIONS请求(因此不希望有响应正文),也不允许重定向。

要解决此问题,您需要正确配置API端,这样它就不会为OPTIONS请求返回重定向。

[UPD]如果您无法触摸API服务器,则可以实现自己的后端代理,该代理将从前端请求并在内部询问API服务器。将不会应用CORS(具有飞行前的限制),您的API密钥也会被保密