如何使用 reactjs 和 webpack 允许 Access-Control-Allow-Origin?

Posted

技术标签:

【中文标题】如何使用 reactjs 和 webpack 允许 Access-Control-Allow-Origin?【英文标题】:How to allow Access-Control-Allow-Origin using reactjs and webpack? 【发布时间】:2017-05-18 14:59:07 【问题描述】:

我正在使用 webpack 在本地服务器上运行 reactjs。我需要从我的 reactjs 应用程序(客户端)向后端进行 ajax 调用,后端也是本地托管服务器,但使用不同的端口。当我从邮递员向我的后端发出请求时,没有问题。但是当我尝试从我的 react js 应用程序中做同样的事情时,我的控制台中出现了这个错误:

XMLHttpRequest cannot load http://localhost:8888/api. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access.

Uncaught (in promise) Error: Network Error
at createError (createError.js:15)
at XMLHttpRequest.handleError (xhr.js:87)

这似乎是一个 C.O.R.S 问题。在互联网上研究了几个小时后,我找不到解决方案。

这是我的代码

反应:

handleClick()
      console.log('focused')
      axios.get('http://localhost:8888/api').then(function(result)
        console.log(result)
      )
    

webpack 配置

devServer: 
     contentBase: 'http://localhost',
     port: 8888,
     // Send API requests on localhost to API server get around CORS.
     proxy: 
        '/api': 
           target: 
              host: "localhost",
              protocol: 'http:',
              port: 3000
           
        
     


  

感谢您的帮助

【问题讨论】:

这看起来很像服务器端错误。你介意分享 /api 路由的代码吗? 您是否尝试将 cors 标头添加到 devServer 配置中? github.com/webpack/webpack-dev-server/issues/533 @DavinTryon 我已经在 devServer 对象中添加了 cors 标头,就像在示例中解释的那样,但仍然是同样的问题 【参考方案1】:

尝试在没有主持人的情况下拨打电话:

handleClick()
     console.log('focused')
     axios.get('/api').then(function(result)
        console.log(result)
     )

【讨论】:

感谢您的帮助。它不起作用。我收到一个错误404 (Not Found)

以上是关于如何使用 reactjs 和 webpack 允许 Access-Control-Allow-Origin?的主要内容,如果未能解决你的问题,请参考以下文章

ReactJS webpack实现JS模块化使用的坑

使用 webpack、ES6、ReactJS 导入 JavaScript 文件和调用函数

yarn使用,reactjs+webpack搭建,运行第一个示例

导出默认不工作的webpack,reactjs

如何使用 webpack 从 React JS 中的外部 JS 文件导入对象

ReactJS 和 Webpack 模块联合应用程序在部署到云端时包含未定义的 url