Apache反向代理:如何将外部站点中的相对URL重定向回自身?
我需要绕过跨站点脚本限制,以便在用户单击我在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中,在任何其他配置语句之外都有: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
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]