过去几天对 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 会抱怨标头条目中的条目过多。
您的请求中是否有任何其他标头。这可能会导致这个问题。
这是我在 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']
},
能够使用 Fiddler 来根本原因问题。 我的 Node/Hapi 方面工作正常。 但是,我之前在 Chrome 上安装了 CORS 插件,它会将后续通配符注入到我的 Access-Control-Allow-Origin 标头中。因此,多值标头。 一旦我禁用了 Chrome 插件上的 CORS 按钮,标题就会如预期的那样。