我开发了一个反向代理,目前只处理来自远程应用程序的“html / text”响应,其他所有内容(图像,javascript等)都是通过未经修改的方式传递的。我遇到的问题是当远程站点包含动态地将java applet或activex控件插入到页面中的javascript时,因为这是在我处理了响应并更改了所有URI之后发生的。
例如:
导航到反向代理以访问remotesite18:
http://reverseproxy.tld/remotesite18
反向代理然后调用remotesite18:
http://remotesite18.mysites.tld/
响应中包含HTML中已修改的链接: 从
<a href="/images/banner.jpg" />
到
<a href="http://reverseproxy.tld/remotesite18/images/banner.jpg" />
等
但是当javascript动态插入相对路径为:
的applet标记时会发生什么test.jar
请求可能会以
的形式返回http://reverseproxy.tld/test.jar
产生404.我需要将其路由到:
http://reversproxy.tld/remotesite18/test.jar
所以我需要插入自己的JavaScript来重新路由这些请求。我知道Glype在某种程度上做到了这一点,但我无法确定如何。
答案 0 :(得分:1)
当您处理响应时,不是单独修复所有URI,您是否可以不在文档的头部添加单个基本URI?
<base href="http://reverseproxy.tld/remotesite18/" />
然后,这将允许动态处理的任何相对URI针对您的反向代理正确解析。它还有一个好处,即您需要更少的处理来修改文档。