apache mod_代理,配置ProxyPass&ProxyPassReverse用于跨域ajax调用

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

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

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

执行ajax调用时,浏览器会响应:XMLHttpRequest无法加载http://localhost:8080/backend/mvc/event. 起源http://localhost 访问控制允许源站不允许使用。

因此,我找到了几种方法来规避这个跨域ajax调用问题:

1) 启动chromechrome.exe--禁用web安全
=>没有区别

2) 使用mod_代理配置apache以重定向流量

我在httpd.conf中启用了:

代理模块
代理连接模块
代理\u http\u模块

我将.htaccess文件放入www根目录中,其中包含以下内容:

#开始修改重写
重新启动发动机
代理请求关闭
<代理权>
命令拒绝,允许
通融
&lt/代理权>
代理通行证/电子邮箱/http://localhost:8080/backend/mvc/
ProxyPassReverse/EMBackend/http://localhost:8080/backend/mvc/
重写规则^/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:此处不允许代理请求

关于如何解决这个问题有什么线索吗

我找到了一个有效的解决方案:

启用:

LoadModule proxy\u modules/mod\u proxy.so
LoadModule proxy\u http\u module modules/mod\u proxy\u http.so

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

代理请求关闭
代理主机
<代理*>
命令拒绝,允许
通融
&lt/代理权>
ProxyPass/Embakendhttp://localhost:8080/backend/mvc
ProxyPassReverse/EMBackendhttp://localhost:8080/backend/mvc
<位置/路堤>
命令允许,拒绝
通融
&lt/地点>

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

发表评论