当前位置: 首页 > 知识库问答 >
问题:

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

尹英华
2023-03-14

我已经找到了这个已经帮了我的忙,但是在我的代理中添加了这样的标题之后。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:“尝试获取资源时出现NetworkError。”

<代码>此。setState({contacts:data})应该存储由后端Java程序交付的JSON对象。JSON对象位于localhost:8080/api,只是字符串

我的反应前端运行在localhost:3000

响应标头如下所示

我在哪里需要这个标题以避免出现CORS错误,最好不要使用npm库“CORS”或任何浏览器附加组件。如果我没弄错的话,我还应该用localhost:8080替换'*',对吗?我的最终目标是将这些字符串动态地放入PrimeReact组件(表)中。

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

警告:

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

警告:

阻止跨源请求:同一源规则禁止读取http://localhost:8080/api.(原因:CORS飞行前通道失败)。

错误:

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

//它是德语的,所以我无法上传屏幕截图,翻译它我忘了提到我把@CrossOrigin放在我的雷斯特控制器上了

共有2个答案

汪凌
2023-03-14

经过无数个小时的调试,结果证明我没有放置http。cors() 编码到我的Web安全配置中。java我在阅读本教程后发现:https://www.baeldung.com/spring-security-cors-preflight

慕鸿波
2023-03-14

无法评论,因为低代表,但你设置app.listen(8080);?

此外,如果您在localhost上同时运行CORS,我认为您不需要更改任何与CORS相关的内容。

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

此外,我建议使用axios,将其定义为前后移动,确保http://localhost:8080/api在浏览器上,您可以在屏幕上看到JSON。

 类似资料:
  • 我发现了很多与我的问题类似的问题,但我没有得到解决方案,这就是为什么我在这里问。 我刚刚开始学习使用React进行前端开发。我已经为在不同端口运行的前端和后端制作了单独的应用程序。 后端:Laravel框架应用程序运行于 前端:在运行的React应用程序 我有一张这样的表格: 我一直在沿着路线走, 这里是 CORS 中间件, 最后这里是用户创建函数 当我从反应应用程序发送帖子请求时,控制台显示以下

  • 我是JMS新手,正在尝试使用Glassfish应用服务器执行我第一个JMS程序。 我在Glassfish管理控制台中创建了连接工厂[JMS/MyQueueFactory]和目标资源[JMS/MyQueue],如下所示: 以下是我的代码: 请让我知道我在这里错过了什么。 多谢了。

  • 我得到这个问题: 这就是它指向的地方 我正在尝试制作一个后端有express,前端有Webpack的应用程序。我在后端有一个Rest API,不能在前端使用。 我将Ubuntu与Mozilla Firefox 66.0.2和Nodejs 11.13.0结合使用 当我使用控制台时,它说问题出在它上面

  • 我试图运行Neo4j手册第32章中的第一个示例,关于使用嵌入在Java应用程序中的Neo4j,该文件是,我正在使用maven,具有适当的Neo4j依赖项。我收到一个编译错误,似乎表明我正在使用Java 1.5,但我看到的所有内容都告诉我我正在使用Java 1.7。 错误如下: 以下是我认为Maven应该使用Java 1.7的原因: [root@cerift02]#mvn-版本 Apache Mav

  • 问题内容: 我一直在看代码,并且看到了尝试资源的机会。我以前使用过标准的try-catch语句,看起来它们在做同样的事情。所以我的问题是“ 尝试使用资源”与“尝试捕获 ”之间的区别是什么,哪个更好。 这是尝试使用资源: 问题答案: 尝试使用资源的重点是确保可靠地关闭资源。 当你不使用try-with-resources时,存在一个潜在的陷阱,称为异常屏蔽。当try块中的代码引发异常,而finall

  • res\drawable\mylayerlistdrawable.xml ----------------------------------------------------------------------------------- 最终答案 在api 21之前的xml可提取资源中,我们不能使用?attr。由aapt在编译时创建的可提取资源。运行时用于动态连接的Attr资源。 解决方案是为