gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 01:57:59 27 4
gpt4 key购买 nike

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

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

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

当执行 ajax 调用时,浏览器响应:XMLHttpRequest 无法加载 http://localhost:8080/backend/mvc/event。 Access-Control-Allow-Origin 不允许来源 http://localhost。

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

1) 启动 chrome chrome.exe --disable-web-security => 没有区别

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

我在 httpd.conf 中启用了:

proxy_module
proxy_connect_module
proxy_http_module

我在 www 根目录下放了一个 .htaccess 文件,内容如下:

# 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/p>

关于如何解决这个问题的任何线索?

最佳答案

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

启用:

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com