【发布时间】:2018-08-17 17:56:44
【问题描述】:
我的项目在带有 Express 后端的 Node 上运行。
我正在尝试使用 Arangojs 查询我的 Arango 数据库客户端。 ArangoDB 在 Digital Ocean 上的 Docker 上运行。我在查询我的数据库服务器端没有问题,但是在页面加载时出现以下错误:
加载失败 http://0.0.0.0:8529/_db/database/_api/cursor:回复 预检请求未通过访问控制检查: 响应中的“Access-Control-Allow-Credentials”标头为“false” 当请求的凭证模式为“包含”时,它必须为“真”。 因此,Origin '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 公开您的数据库凭据...与您的后端通信,并拥有它与您的数据存储进行通信。
【问题讨论】:
-
我在客户端 js 上的代码是这样的:。真的吗 ?您正在客户端连接到 db 吗?
-
你应该尝试从服务器端连接数据库我认为问题会得到解决
-
需要注意的是,发送Allow-Credentials true时,不能Allow-Origin *
-
@jayf93。这不是它的工作原理。您应该连接到服务器端的数据库并向服务器发送数据请求。
标签: javascript node.js express cors xmlhttprequest