模式:“no-cors”与 fetch 配合使用,但对于 axios 失败

Ama*_*mar 6 javascript ajax cors reactjs axios

与 fetch 相比,我更喜欢 axios,因为它简单易用。我正在运行一个本地开发服务器,它将 AJAX 请求发送到某个远程端点。由于同源策略,请求被阻止。所以我修改了我的 webpack 配置,如下所示:

devServer: {
  headers: {
    'Access-Control-Allow-Origin': '*',
  },
},
Run Code Online (Sandbox Code Playgroud)

现在,如果我使用 fetch 发出 API 请求,我添加"mode": "no-cors"允许跨源请求,一切正常。但是,这不适用于 axios。

fetch 基于Request API,允许指定模式:“no-cors”,而 axios 基于 XHR,不支持指定模式。chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security我可以通过运行where is 我的文件系统的某些路径来打开不安全的 chrome 窗口来解决此问题--user-data-dir。但是,不安全的 chrome 实例不允许运行扩展,因此我无法使用 React 和 Redux DevTools。这是使用 fetch 和 axios 发出请求的片段。当 axios 失败时 fetch 调用有效:

componentDidMount() {
  fetch(someAPIEndpoint, {
    mode: 'no-cors',
  })
  .then(response => console.log(response))
  .catch(error => console.error(error))

  axios
  .get(someAPIEndpoint, {
      mode: 'no-cors',
  })
  .then(results => console.log(results))
  .catch(error => console.error(error))
}
Run Code Online (Sandbox Code Playgroud)

在我的情况下也不可能使用代理服务器。代码中是否有其他解决方法,以便我可以使用 axios 并绕过此问题。提前致谢!!!