当前位置: 首页 > 面试题库 >

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

丁德义
2023-03-14
问题内容

我正在创建一个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,它正在工作!



 类似资料:
  • 问题内容: 我了解AJAX跨域策略。因此,我不能仅通过ajax HTTP请求调用“ http://www.google.com ”,并将结果显示在我的网站上。 我使用dataType“ jsonp”进行了尝试,这实际上可以工作,但是出现语法错误(显然是因为接收到的数据不是JSON格式的) 还有其他可能性可以从外部域接收/显示数据吗?iFrame是否遵循相同的政策? 问题答案: 使用AJAX获取跨域

  • 问题内容: 我了解AJAX跨域策略。因此,我不能仅仅通过ajax HTTP请求调用“ http://www.google.com ”,并将结果显示在我的网站上。 我使用dataType“ jsonp”进行了尝试,这实际上可以工作,但是出现语法错误(显然是因为接收到的数据不是JSON格式的) 还有其他可能性可以从外部域接收/显示数据吗?iFrame是否遵循相同的政策? 问题答案: 使用AJAX获取跨

  • 本文向大家介绍JQuery Ajax跨域调用和非跨域调用问题实例分析,包括了JQuery Ajax跨域调用和非跨域调用问题实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JQuery Ajax跨域调用和非跨域调用问题。分享给大家供大家参考,具体如下: 现在的互联网技术发展的越来越快,我们在开发过程中遇到的问题也越来越多。比如当我们需要进行跨域访问数据的时候该如何进行开发?本篇博文就

  • 问题内容: Firefox和Internet Explorer都具有用户可以启用禁止的跨域调用的设置。 Safari和/或Chrome中是否有类似的设置或选项? 问题答案: 不确定野生动物园,但Chrome为此提供了命令行开关: 您可以在此处查看chrome命令行选项的完整列表(截至发布时!)。

  • 文档:https://www.npmjs.com/package/egg-cors 安装:npm i egg-cors --save 配置插件 // {app_root}/config/plugin.js exports.cors = { enable: true, package: 'egg-cors', }; config/config.default.js 目录下配置 config.

  • 从FastAdmin1.2.0版本开始已经支持跨域配置,如果我们开发的插件有跨域需要,可以快速使用FastAdmin中的跨域配置。 首先直接在我们的基类控制器代码中添加一行check_cors_request();即可实现跨域的检测和响应。例如: /** * 初始化操作 * @access protected */ protected function _initialize() {