gpt4 book ai didi

Java Servlet 作为 HTTP 代理

转载 作者:搜寻专家 更新时间:2023-10-31 19:56:59 24 4
gpt4 key购买 nike

我已经阅读了数百篇 SO 帖子并研究了几个可用的 Java HTTP-Proxy 源...但是我找不到解决我的问题的方法。

我编写了一个代理 Http 请求的 Web 应用程序。 WebApp 正在运行,但链接和引荐来源网址已损坏,因为代理页面的“根目录”指向我的服务器的根目录,而不是我的 proxyservlet 的路径..

为了更清楚:

  1. 我的 ProxyServlet 收到请求“http://myserver.com/proxy/ProxyServlet?foo=bar

  2. ProxyServlet 现在从 ServerX 获取页面内容(例如“http://original.com/test.html”)

  3. 只需从一个流读取和写入另一个流并复制 header ,即可将页面内容传送到浏览器。

  4. 浏览器显示页面,浏览器显示的URL是原始请求(“http://myserver.com/proxy/ProxyServlet?foo=bar”),但所有相关链接现在都指向“http://myserver.com/XXX.html”而不是“http://myserver.com/proxy/ProxyServlet/XXX.html

是否有一个响应头,我可以在其中更改“路径”,以便相关链接正确指向我的 ProxyServlet?

(重写页面内容和替换链接太难了,因为页面包含相对寻址的元素,例如 javascript 代码和其他 Activity 内容...)

(将我的 Servlet 的映射更改为“/*”也是不可能的...必须通过此路径访问...)

最佳答案

您正在发明“反向代理”,而错过了“URL 重写”功能...在我的搜索结果的顶部,有一个开源代理 servlet 可以执行此操作: http://j2ep.sourceforge.net/docs/rewrite.html

此外,如果您必须这样做,您应该知道系统架构可能有问题。加入 Apache、nginex、Varnish 等独立代理应该始终是一种选择,因为在开始扩展时您将不得不添加一个(或多个!)。

关于Java Servlet 作为 HTTP 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12073147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com