我在下面的问题中找到了答案here。
我需要在apache中设置一个反向代理,通过将以下行添加到我的虚拟主机中大约需要2分钟;
ProxyPass / couchdb / http://dojo:5984/
由于原始策略相同,您无法跨端口发布数据。我知道这适用于域而不是不同的端口,因此您设置了反向代理。
我想知道如何使用JavaScript或jQuery将数据发布到couchDB。
我按照这个tut创建了一个数据库,我可以使用curl发布和获取数据,一切正常。我使用下面有卷曲的例子。
我也可以使用jQuery获取数据,但我不知道如何POST到CouchDB
curl -X GET http://127.0.0.1:5984/mycouchshop/_all_docs。
curl -X POST http://127.0.0.1:5984/mycouchshop/ -d @ person.json -H“Content-Type:application / json”
我可以使用jQuery获取和显示数据。下面的代码工作正常。
$.ajax({
url : 'http://couchdb:5984/mycouchshop/_design/peoples/_view/people',
type : 'GET',
dataType : "jsonp",
success : function(json) {}
});
但是发布数据导致 405 Method Not Allowed
$.ajax({
url : 'http://couchdb:5984/mycouchshop/',
data : {"forename": "Bob", "surname": "McHamster", "type": "person"},
contentType : "application/json",
type : 'POST',
dataType : "json",
success : function(resp) {}
});
答案 0 :(得分:3)
我不是couchapp专家,但我遇到了同样的问题。问题是您正在进入跨域限制,您的应用程序从一个端口提供,而couchdb在另一个端口上访问。来自couchapp.org:
我从人们开始使用Ajax应用程序编写的常见问题 CouchDB,“当我尝试使用jQuery查询CouchDB时,它没有 通常,事实证明他们有一个index.html文件 filesystem,它试图对CouchDB进行Ajax调用 服务器。在我向他们解释相同的原产地安全政策后,他们 开始理解这意味着CouchDB需要提供他们的HTML (而不是直接从文件系统将其加载到浏览器中)。
因此,最简单的CouchApp只是一个HTML文件 直接来自CouchDB,它使用Ajax加载和保存数据 CouchDB的。
似乎需要使用couchapp(http://couchapp.org/page/index)将所有应用程序文件“推送”到couchdb服务器。我在Mac上工作,所以我使用了Standalone executable。安装couchapp的说明是there
当您了解couchapp的工作原理时,您可以使用this tutorial
我想弄明白......如果你发现任何好事,请分享!祝你好运!
编辑:我刚刚找到this tutorial
答案 1 :(得分:1)
解决跨域资源共享( CORS )问题的另一个解决方案是更改本地CouchDB安装的某些设置。
只需按照此问题发布的答案: Couchdb cors problems