目前,Web 应用程序需要提供某种跨域 HTTP 标头来访问其他域上的数据:http://openfontlibrary.org/wiki/Web_Font_linking_and_Cross-Origin_Resource_Sharing
有没有办法配置CouchDB支持无限制的跨域访问? (它可能在内部使用 apache httpd)我仅使用 db 内部用途。
我发现解决这个问题的最简单方法是使用本地安装阿帕奇网络服务器已启用模组代理模块并配置代理通行证指示。
让我们从基本设置开始
- 我安装了 Apache Web 服务器http://127.0.0.1:8181,尚未配置
- 我已经安装了 CouchDBhttp://127.0.0.1:5984/
- I have 索引.html部署在 Apache 上:http://localhost:8181/couchdb.html.
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 不匹配)。
如何修复它
- configure Apache (apache_home/conf/httpd.conf)
- 取消注释
LoadModule proxy_module modules/mod_proxy.so
- 取消注释
LoadModule proxy_http_module modules/mod_proxy_http.so
- add
ProxyPass /couchdb http://127.0.0.1:5984
(作为顶级属性,如 ServerAdmin)
- 重新启动阿帕奇
- modify index.html
- replace
http.open('GET', 'http://127.0.0.1:5984/_all_dbs', true);
with http.open('GET', '/couchdb/_all_dbs', true);
现在尝试,您应该在 javascript 控制台中看到“它有效”输出(我使用了 Firebug 控制台)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)