VDP*_*VDP 12 javascript apache ajax 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
Run Code Online (Sandbox Code Playgroud)
我.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]
Run Code Online (Sandbox Code Playgroud)
我重新启动了所有服务(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
关于如何解决这个问题的任何线索?
VDP*_*VDP 24
我找到了一个有效的解决方
启用:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
Run Code Online (Sandbox Code Playgroud)
将其放在配置的主要部分(如果使用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>
Run Code Online (Sandbox Code Playgroud)
所以我想我不能把它.htaccess或我必须设置ProxyPreserveHost On.我把Include conf/extra/中httpd.conf文件和创建的httpd-proxy.conf文件,并把上面的脚本在里面.重启apache,它正在运行!
| 归档时间: |
|
| 查看次数: |
47475 次 |
| 最近记录: |