如何防止 Backbone 和 Node.js/Hapi 出现 CORS 错误?

问题描述 投票:0回答:2

过去几天对 Chrome 的更新导致从我的 SPA (Backbone.js) 到我的服务器(运行 Hapi 的 Node.js)的一些 API 调用因 CORB 错误而被阻止。 我正在制作原型,因此当前没有进行身份验证。

在主干中,我使用模型 url 属性,但没有找到指定标头和有效负载类型的方法。

url: function () {
     return 'http://localhost:4000/api/getSpotPrices/' + energy.type);
}

我需要更改 Hapi 中的设置来防止这种情况发生吗?

[更新]我在 Hapi 配置中添加了 CORS 设置并将其设置为通配符:

server.route({
    config: {
        cors: {
            origin: ['*']
        }
    },
    method: 'GET',
    etc...
}

现在 Chrome 抛出错误:

“Access-Control-Allow-Origin”标头包含多个值 'http://localhost:63342, *',但只允许使用一个。

因此,如果没有 CORS 配置,CORB 会阻止我的服务调用。通过 CORS 配置设置,CORS 会抱怨标头条目中的条目过多。

javascript backbone.js hapi.js cross-origin-read-blocking
2个回答
1
投票

您的请求中是否有任何其他标头。这可能会导致这个问题。

这是我在 React 前端中使用的 cors 配置。

cors: {
    origin: ['list of domains that white listed, no need for wildcard for me'],
    credentials: true, // for preflight request
    // these are the additional headers that i am using through my client code
    additionalHeaders: ['cache-control', 'x-requested-with', 'x-csrf-token', 'set-cookie'] 
},

0
投票

能够使用 Fiddler 来根本原因问题。 我的 Node/Hapi 方面工作正常。 但是,我之前在 Chrome 上安装了 CORS 插件,它会将后续通配符注入到我的 Access-Control-Allow-Origin 标头中。因此,多值标头。 一旦我禁用了 Chrome 插件上的 CORS 按钮,标题就会如预期的那样。

© www.soinside.com 2019 - 2024. All rights reserved.