React JS:尝试获取资源时导致 NetworkError 的 CORS 错误

Posted

技术标签:

【中文标题】React JS:尝试获取资源时导致 NetworkError 的 CORS 错误【英文标题】:React JS: CORS Error causing NetworkError when attempting to fetch resource 【发布时间】:2020-05-21 04:01:49 【问题描述】:

我已经找到了 this 这已经帮助了我,但是在我的 proxy.js 中添加了这样的标题之后:

const proxy = require('http-proxy-middleware');

module.exports = function(app) 
    app.use(function(req, res, next) 
//adding headers to allow CORS
        res.header("Access-Control-Allow-Origin", "*");
        res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
        next();

    );
    app.use(proxy('/api',  target: 'http://localhost:8080' ));

在 fetch() 中,我还添加了标题以确保它正常工作:

fetch('http://localhost:8080/api',
            headers:
                'Access-Control-Allow-Origin':'*'
            ,

        )
            .then(res => res.json())
            .then((data) => 
                this.setState( contacts: data )
            )
            .catch(console.log)
    

我仍然收到错误:TypeError:“尝试获取资源时出现网络错误。”

this.setState( contacts: data ) 应该存储由我的后端 Java 程序提供的 JSON 对象。 JSON 对象位于 localhost:8080/api 并且只是字符串

我的 React 前端在 localhost:3000 上运行

The Response Header looks like this

为了不出现 CORS 错误,我在哪里需要此标头,最好我希望在没有 npm 库“cors”或任何浏览器插件的情况下工作。我也应该用 localhost:8080 替换 '*' 如果我没记错的话,对吧? 我的最终目标是将这些字符串动态地放入 PrimeReact 组件(A 表)中。

编辑:sideshowbarker 请求的完整错误消息:

警告:

跨域请求被阻止:同源规则禁止读取http://localhost:8080/api处的外部资源。 (原因:CORS 预检通道不成功)。

警告:

跨域请求被阻止:同源规则禁止读取http://localhost:8080/api处的外部资源。 (原因:CORS 预检通道失败)。

错误:

TypeError:“尝试获取资源时出现网络错误。

//是德文所以无法上传截图,翻译一下 我忘了提到我也把@CrossOrigin 放在我的 Restcontroller 上

【问题讨论】:

浏览器在 devtools 控制台中记录的完整错误消息是什么? 【参考方案1】:

因为rep低不能评论,但是你设置了app.listen(8080); ?

如果你同时在本地主机上运行,​​我认为你不需要更改与 CORS 相关的任何内容。

您的浏览器中是否有可能导致此问题的更改?换个浏览器试试?

我还建议使用 axios,将其定义为前后 GET,确保当您在浏览器上转到 http://localhost:8080/api 时,您会在屏幕上看到 JSON。

【讨论】:

我在app.use(function(req, res, next) 之前添加了一个app.listen 但什么也没发生并且localhost 显示一个JSON【参考方案2】:

经过无数小时的调试,我发现我没有在我的 WebSecurityConfig.java 中添加 http.cors(); 我在阅读本教程后发现了这一点: https://www.baeldung.com/spring-security-cors-preflight

【讨论】:

以上是关于React JS:尝试获取资源时导致 NetworkError 的 CORS 错误的主要内容,如果未能解决你的问题,请参考以下文章

尝试在 Node.js 和 React 中获取 jwt 键时出现语法错误

Axios在react js中获取请求时出错

尝试访问本地 API 端点时,React/Next.js docker build 失败

TypeError:尝试获取资源时出现 NetworkError。从nodejs服务器获取数据时得到这个[重复]

React.js 获取 API 的多个端点

Python网页抓取 - 当页面通过JS加载内容时如何获取资源?