【问题标题】:CORS error in PouchDB with CORS enabled in CouchDBPouchDB 中的 CORS 错误,在 CouchDB 中启用了 CORS
【发布时间】:2015-07-21 14:43:27
【问题描述】:

我在 CouchDB 中启用了 CORS:

我在 Windows 8.1 上运行该应用,并使用 hapi.js 提供服务。

一段时间后在 Chrome 中查看时,控制台中会出现此错误消息:

Uncaught (in promise) CustomPouchError {status: 500, name: "unknown_error", message: "Database encountered an unknown error", error: true, toString: function}

Firefox 中止访问 CouchDB,例如: http://127.0.0.1:5984/user_z_at_z_p_ch/?_nonce=1431328831527, 然后报告跨源请求被阻止。

我尝试运行 add-cors-to-couchdb 但我收到此错误:

PS C:\Users\alex> add-cors-to-couchdb
events.js:85
      throw er; // Unhandled 'error' event
        ^
Error: read ECONNRESET
    at exports._errnoException (util.js:746:11)
    at TCP.onread (net.js:559:26)

【问题讨论】:

    标签: couchdb pouchdb


    【解决方案1】:

    您的 CORS 设置看起来正确。您确定您的 CouchDB 可以从您使用的主机名/端口进行外部访问吗?

    如果add-cors-to-couchdb 失败,那是因为localhost:5984 的默认CouchDB 无法访问。它具有在另一个 URL 指定 CouchDB 的选项。

    【讨论】:

    • 这很奇怪,因为蒲团在 localhost:5984/_utils/index.html 和 fauxton 上都能完美运行。另外: curl localhost:5984 返回状态 200
    • 嗯,如果 curl 工作正常,那么您可以使用替代 curl 方法:github.com/pouchdb/add-cors-to-couchdb#what-it-does
    • 好吧,在 windows 上卷曲...我放弃了比基本命令更复杂的操作
    • 我尝试按照“ubuntu 特殊说明”在 ubuntu 14.04 上运行 add-cors-to-couchdb,但出现错误:[Error: got a 401 code]
    • 401 表示您未经授权,因此您需要输入管理员用户名/密码。 :)
    【解决方案2】:

    好像我在 couchdb 的 config.ini 的 cors 部分漏掉了一个标头:x-csrf-token

    cors 现在可以使用这些标头:

    accept, authorization, content-type, origin, referer, x-csrf-token
    

    我不知道为什么会这样,但是嘿:它有效

    【讨论】:

    • 原因是当请求的至少一个标头不在CORS配置中时,浏览器拒绝执行由JS代码发起的请求。您可以在浏览器中调试浏览器之前执行的前 HEAD 请求。提到的每个标头都必须在 CORS 配置中。就像之前的一个快速问题:“亲爱的服务器!您能允许我发送这样的请求吗?”如果答案是“不!”浏览器不会请求 - 您会立即收到错误消息。
    猜你喜欢
    • 2014-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    • 2020-02-17
    • 2019-11-15
    • 1970-01-01
    相关资源
    最近更新 更多