如何使用JavaScript访问CouchDB? SOP错误

时间:2012-04-19 09:31:00

标签: javascript jquery jquery-plugins couchdb same-origin-policy

我是Couch DB的新手。我在我的大学服务器上的主文件夹上安装了CouchDB,看起来像......

http://servername.com/home/users/roby

Db正在1234端口运行,效果很好。我可以使用Couch4J驱动程序使用我的机器上的SSH隧道填充数据库。

我正在开发一个需要存储在数据库中的数据的Web应用程序。假设我有一个位于

的index.html文件
http://servername.com/home/users/roby/public_html/index.html

被翻译为

http://servername.com/~roby/index.html

发出简单请求时,我遇到了奇怪的错误,例如

XMLHttpRequest cannot load http://xxxxxxx:1234/. 
Origin http://servername.com is not allowed by Access-Control-Allow-Origin.

我用来尝试从DB获得一些响应的代码如下

$.couch.urlPrefix = "http://xxxxxxx:1234";

$.couch.info({
    success: function(data) {
        console.log(data);
    }
});

感谢任何帮助。

感谢。

RM

1 个答案:

答案 0 :(得分:3)

你有三个选择。

  1. 您可以使用Nginx代理CouchDB,这样您就可以在为CouchDB提供服务时从同一端口提供html。
  2. 您可以通过将CouchDB附加到文档来提供来自CouchDB本身的html(最简单的方法是使用CouchApp或类似方法)。
  3. 最后你可以在CouchDB中启用jsonp响应并添加calback param来查询,jQuery支持jsonp响应。
  4. 如果您无法更改服务器配置,则选项1和3已完成。对于第二个,您可以在最低级别使用put请求添加附件:

    curl -X PUT http://xxxx:1234/dbname/docname/index.html --data-binary @index.html -H "Content-Type: text/html"
    

    每次更改后都需要上传文件,因此手动操作并不实际。有CouchAppKenso等工具可以帮助您。