Couchdb 的 CORS 配置

Posted

技术标签:

【中文标题】Couchdb 的 CORS 配置【英文标题】:CORS Configuration for Couchdb 【发布时间】:2016-10-09 01:49:33 【问题描述】:

我已经阅读了一堆博客和堆栈溢出帖子,我看到的所有内容都说将 CORS 配置添加到 local.ini 文件中,如下所示:

[httpd]
enable_cors = true

[cors]
credentials = true
origins = *

我们查询 Couchdb 的 JS 如下所示:

$.ajax(
            url: "http://xxxx:8093/query/service?statement=select member from edc",
            type: 'GET',
            dataType: 'json',
            crossDomain: true,
            success: function(data) 
              console.log("data: " + JSON.stringify(data));
            ,
            error: function(xhr, status, err) 
              console.log("error: " + err + " xhr: " + JSON.stringify(xhr));
            ,
            complete: function(data) 
                alert('complete: ' + JSON.stringify(data))
              
          )

停止并重新启动 windows 服务后,我仍然收到错误:

跨域请求被阻止:同源策略不允许读取 远程资源在 http://phx01-vm117.matrixhealth.net:8093/query/service?statement=select%20member%20from%20edc。 (原因:CORS 标头“Access-Control-Allow-Origin”缺失)。

任何有关配置或 GET 请求的帮助都会很棒,谢谢!使用插件或在非安全模式下运行浏览器不是一种选择

【问题讨论】:

【参考方案1】:

我知道从提出这个问题到我回答之间已经过去了很长时间,但我想我会分享一下,以防万一有人的 Google 搜索将它们发送到这里。

这个问题是由于只包含了一半所需的 CORS 选项。在此处查看非常相似问题的答案:how to edit local.ini to enable CROS with couchdb

而不是包括:

[cors]
credentials = true
origins = *

您需要包括:

[cors]
credentials = true
origins = *
methods = GET, PUT, POST, HEAD, DELETE
headers = accept, authorization, content-type, origin, referer

您可能认为前者启用了 CORS.. 确实如此,但是您需要明确授予它权限。

【讨论】:

以上是关于Couchdb 的 CORS 配置的主要内容,如果未能解决你的问题,请参考以下文章

UI和couchDB之间的CORS问题

Angular 4 call couchdb有CORS错误,但提琴手中没有出现预检

CouchdB Jquery Ajax POST CORS

如何在 couchDB 中添加 cors - 请求的资源上不存在“Access-Control-Allow-Origin”标头

CouchDB 中的 _users 数据库不允许使用 HTTP OPTIONS 方法

CouchDB入门