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

时间:2020-02-05 09:11:58

标签: reactjs spring proxy cors response

我已经找到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:“尝试获取资源时出现NetworkError。”

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

我的React Frontend在localhost:3000上运行

The Response Header looks like this

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

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

警告:

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

警告:

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

错误:

TypeError:“尝试获取资源时出现NetworkError。

//这是德语,因此我无法上传屏幕截图,也无法翻译 我忘了提起我也将@CrossOrigin放在我的Restcontroller上

2 个答案:

答案 0 :(得分:0)

由于声望低而无法发表评论,但您是否设置了app.listen(8080); ?

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

您可能会在浏览器中进行某些更改以引起这种情况吗?尝试使用其他浏览器?

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

答案 1 :(得分:-1)

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