首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从XMLHttpRequest进行CouchDB跨域访问?

从XMLHttpRequest进行CouchDB跨域访问?
EN

Stack Overflow用户
提问于 2010-07-30 21:17:20
回答 7查看 7.1K关注 0票数 11

目前,web应用程序需要提供某种跨域HTTP头来访问其他域上的数据:http://openfontlibrary.org/wiki/Web_Font_linking_and_Cross-Origin_Resource_Sharing

有没有办法将CouchDB配置为支持无限制的跨域访问?(它可能在内部使用apache httpd )我只是在内部使用db。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-08-29 14:24:06

您可以使用CouchDB显示函数来设置Access-Control-Allow-Origin头。

代码语言:javascript
运行
复制
function(doc, req) {
  return {
    body : 'whatever',
    headers : {
      "Access-Control-Allow-Origin": "\"*\""
    }
  }
}

有关显示函数的更多信息,请单击此处:http://guide.couchdb.org/draft/show.html

票数 9
EN

Stack Overflow用户

发布于 2010-10-23 17:36:02

我找到的最简单的解决方法是使用本地安装的Apache Web Server,并启用mod_proxy模块和配置ProxyPass指令。

让我们从基本设置开始

  • 我在http://127.0.0.1:8181上安装了Apache Web Server,但尚未配置
  • 。我在http://127.0.0.1:5984/
  • I上安装了CouchDB,在Apache上部署了index.htmlhttp://localhost:8181/couchdb.html

index.html包含以下内容

代码语言:javascript
运行
复制
<html>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">

var http = XMLHttpRequest();
http.open('GET', 'http://127.0.0.1:5984/_all_dbs', true); // ! WE WILL CHANGE THIS LINE
http.onreadystatechange = function() {
    if (http.readyState == 4 && http.status == 200) {
        console.debug('it works');
    }
};
http.send(null)
</script>
<head><title>Test Access to CouchDB</title></head>
<body>
</body>
</html>

如果您现在尝试它,它将不会工作,因为跨域问题(在这种情况下,端口不匹配8181 != 5984)。

如何修复它?

  • 配置Apache (apache_home/conf/httpd.conf)
    • 取消注释LoadModule proxy_module modules/mod_proxy.so
    • uncomment LoadModule proxy_http_module modules/mod_proxy_http.so
    • add ProxyPass /couchdb http://127.0.0.1:5984 (作为顶级属性,如ServerAdmin)
    • 重新启动Apache

http.open('GET', '/couchdb/_all_dbs', true);替换

  • modify index.html
    • http.open('GET', 'http://127.0.0.1:5984/_all_dbs', true);

现在试一下,你应该会在javascript控制台中看到'it works‘的输出(我用的是Firebug控制台)

票数 14
EN

Stack Overflow用户

发布于 2013-04-14 06:22:10

CouchDB 1.3通过CORS解决了这个问题:https://wiki.apache.org/couchdb/CORS

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3371774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档