【发布时间】:2012-08-22 12:27:47
【问题描述】:
我已经阅读了数百篇 SO 帖子并研究了几个可用的 Java HTTP 代理源......但我找不到我的问题的解决方案。
我编写了一个代理 Http-Requests 的 WebApp。 WebApp 正在运行,但链接和引荐来源网址已损坏,因为代理页面的“根”指向我的服务器的根目录,而不是我的 proxyservlet 的路径..
为了更清楚:
我的 ProxyServlet 收到请求“http://myserver.com/proxy/ProxyServlet?foo=bar”
ProxyServlet 现在从 ServerX 获取页面内容(例如“http://original.com/test.html”)
只需从一个流向另一个流读写并复制标题,即可将页面内容传递给浏览器。
浏览器显示的页面,即浏览器显示的 URL 是原始请求(“http://myserver.com/proxy/ProxyServlet?foo=bar”),但所有相关链接现在都指向 “http://myserver.com/XXX.html”而不是“http://myserver.com/proxy/ProxyServlet/XXX.html”
是否有一个响应标头,我可以在其中更改“路径”,以便相关链接正确指向我的 ProxyServlet?
(重写页面内容和替换链接太难了,因为页面包含相对寻址的元素,例如javascript代码和其他活动内容......)
(将我的 Servlet 的映射更改为“/*”也是不可能的...必须通过此路径访问...)
【问题讨论】:
-
我自己不知道标头,但我的第一步是使用“curl”之类的工具来查看您的 servlet 返回的标头。所以...curl -i myserver.com/proxy/ProxyServlet?foo=bar,如果您可以访问 Unix 机器。
-
您需要在该命令中将协议放在 mysever 前面。 cmets 会自动将开始 http... 的内容转换为链接并删除 http!
-
除了我的 Servlet 之外,我不能使用 curl 或其他任何东西......我不管理服务器,也不能设置“真正的”代理,也不能设置套接字或或或......我有通过 Servlet 代理页面...
标签: java servlets proxy http-headers