Eon*_*nil 11 couchdb cross-domain
目前,Web应用程序需要提供某种跨域HTTP标头来访问其他域上的数据:http://openfontlibrary.org/wiki/Web_Font_linking_and_Cross-Origin_Resource_Sharing
有没有办法配置CouchDB来支持无限制的跨域访问?(它可能在内部使用apache httpd)我只在内部使用db.
roz*_*zky 14
我找到解决问题的最简单方法是使用本地安装的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>
Run Code Online (Sandbox Code Playgroud)
如果你现在尝试它,它将无法工作,因为跨域问题(在这种情况下端口不匹配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', 'http://127.0.0.1:5984/_all_dbs', true);为http.open('GET', '/couchdb/_all_dbs', true);现在尝试,你应该在javascript控制台中看到'it works'输出(我使用的是Firebug控制台)
您可以使用CouchDB show函数来设置Access-Control-Allow-Origin标头.
function(doc, req) {
return {
body : 'whatever',
headers : {
"Access-Control-Allow-Origin": "\"*\""
}
}
}
Run Code Online (Sandbox Code Playgroud)
有关show functions的更多信息,请访问:http://guide.couchdb.org/draft/show.html
| 归档时间: |
|
| 查看次数: |
7035 次 |
| 最近记录: |