[英]apache mod_proxy, configuring ProxyPass & ProxyPassReverse for cross-domain ajax calls
我正在創建一個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.
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
我在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
關於如何解決這個問題的任何線索?
我找到了一個有效的解決方
啟用:
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
。 我在httpd.conf
文件中Include conf/extra/
並創建了httpd-proxy.conf
文件並將上面的腳本放入其中。 重啟apache,它正在運行!
在啟用代理模塊后,您只需在httpd.conf中添加給定的行。
ProxyPreserveHost On
ProxyPass /EMBackend http://localhost:8080/backend/mvc
ProxyPassReverse /EMBackend http://localhost:8080/backend/mvc
只需重啟服務器即可完成。
在非常現代的apache中,打開代理:
a2enmod proxy;
a2enmod proxy_http
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.