javascript - apache mod_proxy,为跨域ajax调用配置ProxyPass和ProxyPassReverse

标签 javascript ajax apache cross-domain

我正在创建一个 html5 - JavaScript 应用程序(用于移动设备,使用 PhoneGap)。我必须与 REST 服务交互。

该服务现在在 "http://localhost:8080/backend/mvc/" 上运行

我正在 wamp 服务器 (apache2) (http://localhost/stage/) 上开发我的应用程序
我正在使用 Chrome 浏览器。

执行 ajax 调用时,浏览器响应:XMLHttpRequest cannot load http://localhost:8080/backend/mvc/event. Origin http://localhost is not allowed by Access-Control-Allow-Origin.
所以我找到了几种方法来规避这个跨域ajax调用问题:

1) 开始 Chrome chrome.exe --disable-web-security => 没有区别

2) 使用 mod_proxy 配置 apache 来重定向流量。

我在 httpd.conf 中启用:

proxy_module
proxy_connect_module
proxy_http_module

我放了一个.htaccess www根目录下的文件,内容如下:
# start mod_rewrite
RewriteEngine On

ProxyRequests off
<Proxy>
    Order deny,allow
    Allow from all
</Proxy>

ProxyPass /EMBackend/ http://localhost:8080/backend/mvc/
ProxyPassReverse /EMBackend/ http://localhost:8080/backend/mvc/
RewriteRule ^/EMBackend/(.*)$ /backend/mvc/$1 [R]

我重新启动了所有服务(apache,php,..)

导致错误 500

apache 错误日志:[Tue Oct 18 14:30:11 2011] [alert] [client 127.0.0.1] C:/wamp/www/.htaccess: ProxyRequests not allowed here
关于如何解决这个问题的任何线索?

最佳答案

我找到了一个可行的解决方案:

使能够:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

将其放在配置的主要部分(或所需的虚拟主机,如果使用 Apache 虚拟主机):
ProxyRequests Off
ProxyPreserveHost On

<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

ProxyPass /EMBackend http://localhost:8080/backend/mvc
ProxyPassReverse /EMBackend http://localhost:8080/backend/mvc
<Location /EMBackend>
    Order allow,deny
    Allow from all
</Location>

所以我想我不能把它放在.htaccess或者我必须设置 ProxyPreserveHost On .我把 Include conf/extra/httpd.conf文件并创建了 httpd-proxy.conf文件并将上面的脚本放入其中。重新启动apache,它正在工作!

关于javascript - apache mod_proxy,为跨域ajax调用配置ProxyPass和ProxyPassReverse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7807600/

相关文章:

apache - 如何在 node-http-proxy 旁边使用虚拟主机?

python - 如何使用 mod_python 引发 HTTP 错误

javascript - 是否可以使用JSONP图像搜索API来让用户在我的网站上搜索图像?

javascript - 如何检查ajax或jquery中是否存在url或网页

javascript - 从弹出窗口中选择父实体

php - PHP:顺序输出的最佳方法?

php - 如何解析JavaScript中的SQL查询返回?

jquery - 为什么 Angular 数据绑定(bind)不适用于 jquery ajax?

php - 在同一虚拟机上为 ZF2 应用程序配置多个环境的问题

javascript - 如何让 web MIDI 输出 Controller 工作?