CORS'Ellow-Credentials'Nodejs / Express

时间:2018-03-09 07:55:20

标签: javascript node.js express cors xmlhttprequest

我的项目在带有Express后端的Node上运行。

我正在尝试使用Arangojs查询我的Arango数据库客户端。 ArangoDB正在Digital Ocean上的Docker上运行。查询我的数据库服务器端没有问题,但是在页面加载时出现以下错误:

  

无法加载   http://0.0.0.0:8529/_db/database/_api/cursor:回复   预检请求不通过访问控制检查:的值   响应中的“Access-Control-Allow-Credentials”标头为“false”   当请求的凭据模式为“include”时,它必须为“true”。   因此,不允许原点“http://localhost:3000”访问。该   XMLHttpRequest发起的请求的凭证模式是   由withCredentials属性控制。

我在客户端js上的代码如下所示:

var db = new arangojs.Database({url:'http://0.0.0.0:8529'})
db.useDatabase(dbase)
db.useBasicAuth("database", 'password')
db.query('FOR doc IN docs RETURN doc') // etc. etc.

编辑: 1年后,事后看来这个问题非常愚蠢 - 对此的正确答案是不要通过客户端JS公开您的数据库凭据...与您的后端通信,并拥有与您的数据存储区通信。

1 个答案:

答案 0 :(得分:2)

您正在配置cors()错误,您必须使用credentials属性才能配置 Access-Control-Allow-Credentials

var cors = require('cors');
var corsOptions = {
    origin: '*',
    credentials: true };

app.use(cors(corsOptions));

除此之外,您的app.all(* ...不是必需的,因为app.use(cors(corsOptions));已经为您处理了。{/ p>