我的项目在带有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公开您的数据库凭据...与您的后端通信,并拥有与您的数据存储区通信。
答案 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>