目前,web应用程序需要提供某种跨域HTTP头来访问其他域上的数据:http://openfontlibrary.org/wiki/Web_Font_linking_and_Cross-Origin_Resource_Sharing
有没有办法将CouchDB配置为支持无限制的跨域访问?(它可能在内部使用apache httpd )我只是在内部使用db。
发布于 2010-08-29 14:24:06
您可以使用CouchDB显示函数来设置Access-Control-Allow-Origin头。
function(doc, req) {
return {
body : 'whatever',
headers : {
"Access-Control-Allow-Origin": "\"*\""
}
}
}有关显示函数的更多信息,请单击此处:http://guide.couchdb.org/draft/show.html
发布于 2010-10-23 17:36:02
我找到的最简单的解决方法是使用本地安装的Apache Web Server,并启用mod_proxy模块和配置ProxyPass指令。
让我们从基本设置开始
index.html包含以下内容
<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)。
如何修复它?
LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_http_module modules/mod_proxy_http.soProxyPass /couchdb http://127.0.0.1:5984 (作为顶级属性,如ServerAdmin)
用http.open('GET', '/couchdb/_all_dbs', true);替换
http.open('GET', 'http://127.0.0.1:5984/_all_dbs', true);
现在试一下,你应该会在javascript控制台中看到'it works‘的输出(我用的是Firebug控制台)
发布于 2013-04-14 06:22:10
CouchDB 1.3通过CORS解决了这个问题:https://wiki.apache.org/couchdb/CORS
https://stackoverflow.com/questions/3371774
复制相似问题