如何使用Backbone和Node.js / Hapi防止CORB错误?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Backbone和Node.js / Hapi防止CORB错误?相关的知识,希望对你有一定的参考价值。

过去几天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会在标头条目中抱怨过多条目。

答案

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

这是我的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'] 
},
另一答案

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

以上是关于如何使用Backbone和Node.js / Hapi防止CORB错误?的主要内容,如果未能解决你的问题,请参考以下文章

哪个数据库适合我的应用程序 mysql 或 mongodb ?使用 Node.js 、 Backbone 、 Now.js

在 Apache 或 IIS 中托管时将 Backbone.js 与 CouchDB 连接

Backbone.js、mongodb 和获取相关对象——客户端还是服务器端?

Node.js + express web应用如何打包部署?

在 Express JS 中为 Ajax 设置 REST 路由,仅用于 Backbone

PHP 或 Rails 前的 Node.JS