Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache反向代理:如何将外部站点中的相对URL重定向回自身?_Apache_Cross Domain_Mod Proxy_Cross Domain Proxy - Fatal编程技术网

Apache反向代理:如何将外部站点中的相对URL重定向回自身?

Apache反向代理:如何将外部站点中的相对URL重定向回自身?,apache,cross-domain,mod-proxy,cross-domain-proxy,Apache,Cross Domain,Mod Proxy,Cross Domain Proxy,我需要绕过跨站点脚本限制,以便在用户单击我在iframe(external.com/onlyforme)中加载的外部站点的链接时向他们显示地图。我了解到,最简单的方法是设置一个反向代理,以便Apache在我访问local.com/external时检索external.com/onlyforme,并使其看起来像来自我的域 这通常是有效的,但当external.com/onlyforme/index.html尝试访问external.com/onlyforme/site\u media/scrip

我需要绕过跨站点脚本限制,以便在用户单击我在iframe(external.com/onlyforme)中加载的外部站点的链接时向他们显示地图。我了解到,最简单的方法是设置一个反向代理,以便Apache在我访问local.com/external时检索external.com/onlyforme,并使其看起来像来自我的域

这通常是有效的,但当external.com/onlyforme/index.html尝试访问external.com/onlyforme/site\u media/script.js时,会重定向到local.com/site\u media/script.js,这不是我想要的。相反,我希望将其重定向到external.com/onlyforme内的正确URL,以便外部站点按预期工作

我该怎么做

在我的httpd.conf中,在任何其他配置语句之外都有:

ProxyRequests Off
ProxyPass /external/ http://www.external.com/onlyforme
ProxyPassReverse /external/ http://www.external.com/onlyforme

我正在运行Apache2.2。

您需要在上面添加几个指令,以检查和重写返回HTML中的任何硬编码URL,例如

ProxyRequests Off
ProxyPass        /external/         http://www.external.com/onlyforme
ProxyHTMLURLMap http://www.external.com/onlyforme     /external

<Location /external/>
  ProxyPassReverse  http://www.external.com/onlyforme
  SetOutputFilter proxy-html
  ProxyHTMLURLMap /            /external/
  ProxyHTMLURLMap /site_media  /external/site_media/
</Location>
ProxyRequests关闭
代理通过/外部/http://www.external.com/onlyforme
ProxyHTMLMAPhttp://www.external.com/onlyforme     /外部的
ProxyPassReversehttp://www.external.com/onlyforme
SetOutputFilter代理html
ProxyHtmlURL映射//外部/
ProxyHtmlURL映射/站点\媒体/外部/站点\媒体/
另请参见:

的回答极大地帮助我解决了类似的问题。我试图将其缩小到尽可能短的规则集,并且有我自己的配置,可以在以下位置运行:


ProxyPasshttp://localhost:9001 重试=0
#重试=0=>重新启动etherpad lite时避免503
ProxyPassReversehttp://localhost:9001
SetOutputFilter代理html
ProxyHTMLMAPhttp://localhost:9001
重写规则^/pad$/pad/[R]
<Location /pad>
  ProxyPass http://localhost:9001 retry=0
  # retry=0 => avoid 503's when restarting etherpad-lite
  ProxyPassReverse http://localhost:9001
  SetOutputFilter proxy-html
  ProxyHTMLURLMap http://localhost:9001
</Location>
RewriteRule ^/pad$ /pad/ [R]