【问题标题】:How to access CouchDB using JavaScript? SOP errors如何使用 JavaScript 访问 CouchDB? SOP 错误
【发布时间】:2012-04-30 19:14:30
【问题描述】:

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

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

Db 在端口 1234 上运行,并且运行良好。我能够使用我机器上的 SSH 隧道,使用适用于 Java 的 Couch4J 驱动程序填充数据库。

我正在开发一个需要存储在数据库中的数据的 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.

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

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

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

感谢任何帮助。

谢谢。

RM

【问题讨论】:

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


    【解决方案1】:

    你有三个选择。

    1. 您可以使用 Nginx 代理 CouchDB,这样您就可以从与 CouchDB 相同的端口提供 html。
    2. 您可以通过将 CouchDB 本身附加到文档来提供 html(最简单的方法是使用 CouchApp 或类似方法)。
    3. 终于可以在CouchDB中启用jsonp响应,并在查询中添加calback参数,jQuery已经支持jsonp响应了。

    如果您无法更改服务器配置,则选项 1 和 3 不可用。至于第二个,您可以在最低级别使用 put 请求添加附件:

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

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

    【讨论】:

    • 感谢您的回复。如果我无权在我的服务器上安装 CouchApp 怎么办?如何手动将 HTML 文档附加到 CouchDB 文档?我只需要三个视图,它们是我已经用 Futon 创建的。在这种情况下你建议代理吗?
    • @RMinelli 嗨,我已经扩展了我的答案,希望现在更清楚了。
    • 非常感谢!我会试试的,现在我把它作为我开发中的辅助工作!
    猜你喜欢
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    相关资源
    最近更新 更多