【问题标题】:Cross-Origin Request Blocked in any browser eventhough supported跨域请求在任何浏览器中被阻止,即使支持
【发布时间】:2021-05-21 14:56:28
【问题描述】:

我已经阅读了很多其他 stackoverflow 问题和 github 问题,但没有一个能够解决我的问题,所以我决定打开一个新问题。

我正在使用 Nextjs(前端)和 Express+Node(后端)构建一个简短的应用程序。每次前端通过 REST 向后端发出获取/发布请求时,我都会得到

“跨域请求被阻止:同源策略不允许 读取 DOMAIN 中的远程资源。 (原因:CORS 标头 'Access-Control-Allow-Origin' 缺失)。”

为了解决这个问题,我尝试了多种方法。首先我在我的后端添加了app.use(cors()),但这没有用。我加了

const configcors = {
    origin: true,
    methods: 'GET,HEAD,POST,PUT,DELETE,CONNECT,OPTIONS,TRACE,PATCH',
    allowedHeaders: 'X-Powered-By,Content-Type,Content-Length,ETag,Date,Connection,Keep-Alive',
    exposedHeaders: 'X-Powered-By,Content-Type,Content-Length,ETag,Date,Connection,Keep-Alive',
    credentials: true
}
app.use(cors(configcors))

绝对允许一切,但这也不起作用。我尝试使用手动添加标题

app.use(function(req, res, next) {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
    next();
  });

这 - 正如你所料 - 也没有工作。 最后我想如果预检有错误,所以我尝试了

app.options('*', cors(configcors))

这也不起作用。此外,为了解决这个问题,我查看了网络选项卡,以识别标头以及是否发送了正确的标头。在 Firefox 中,Networking 选项卡中根本没有出现 Request。

铬:

在 chrome 上,我可以看到请求,但根本没有响应标头。这让我假设可能 CORS 不是问题 - 为了尝试这个,我在 chrome 中安装了 moesif CORS 扩展以允许各种 CORS。我错了:启用扩展后,每个请求都可以正常工作 - 但我不能依赖生产中的扩展。

这意味着该错误肯定与CORS有关,但我不知道我现在应该做什么。

如果有人遇到类似的问题,我会非常感谢你的建议。

【问题讨论】:

    标签: rest express axios cors next.js


    【解决方案1】:

    试试这个:

        app.use(function(req, res, next) {
        res.header("Access-Control-Allow-Origin", "http://localhost:3000");
        res.header("Access-Control-Allow-Headers", "*");
        next();
    });
    

    【讨论】:

    猜你喜欢
    • 2021-06-26
    • 2014-10-13
    • 1970-01-01
    • 2018-06-13
    • 2019-11-04
    • 2017-02-06
    • 2016-01-29
    相关资源
    最近更新 更多