CORS 与 React、Webpack 和 Axios

Posted

技术标签:

【中文标题】CORS 与 React、Webpack 和 Axios【英文标题】:CORS with React, Webpack and Axios 【发布时间】:2018-04-04 06:45:48 【问题描述】:

如何使用 webpack 和 axios 在 react 前端应用中设置 CORS Header。

我想从 API 网址获得响应。我是否必须使用 express 设置单独的服务器,或者可以使用前端应用程序中的 webpack-dev-server 来完成。

我得到错误:

Failed to load https://api.test.io/test/res: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access.

【问题讨论】:

Origin http://localhost:3000 is not allowed by Access-Control-Allow-Origin的可能重复 您似乎需要将 localhost 列入白名单以使用您的 API 提供者 test.io 进行开发 我在浏览器中打开了api.test.io/test/res>,它显示404。有时如果你以错误的方式使用API​​,你会得到一个CORS响应。 【参考方案1】:

您没有在客户端设置 CORS 标头,它们是由浏览器自动发送的。你在服务器端做。配置 Webpack 服务器以将 Access-Control-Allow-Origin 设置为通配符 * 进行回复。

devServer: 
   headers:  
       "Access-Control-Allow-Origin": "*"
   

【讨论】:

【参考方案2】:

问题在于服务器,而不是 Axios。您需要设置 webpack devServer 标头以允许 CORS。

devServer: 
   headers:  
       "Access-Control-Allow-Origin": "*",
       "Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept"
   

【讨论】:

以上是关于CORS 与 React、Webpack 和 Axios的主要内容,如果未能解决你的问题,请参考以下文章

Webpack devserver 代理无法解决 CORS 问题

用于 CORS 请求的 webpack-dev-server 配置

创建 React App 添加 CORS 标头

如何在 create-react-app 中激活 CORS?

与 react、express、axios、node 和 mysql 相关的 CORS 问题

如何将 CSS 模块与 Typescript、React 和 Webpack 一起使用?