早上好,我决定创建一个 http 代理 servlet,因为我在一个几乎所有页面都被阻止的网络中,有一个几乎阻止所有页面的防火墙称为 fortinet。 我的想法是使用我拥有的未被阻止的服务器,但在该服务器上仅安装了 Web 应用程序存档(glassfish),并希望创建一个 Web 应用程序作为您希望访问的页面之间的中介和我的电脑,从而不受限制地自由导航。
到目前为止,我已经使用了 HTTP-Proxy-Servlet project
问题是:显然只连接到以前我们使用参数 targetUri
配置 web.xml
文件的单个网站
<init-param>
<param-name>targetUri</param-name>
<param-value>http://solrserver:8983/solr</param-value>
</init-param>
如何动态更改此参数并作为通用和当前在线代理进行导航?
最佳答案
要实现“真实”代理(不仅仅是“固定 URL”代理),您需要使用 getRequestURL
方法来获取请求的真实 URL。
比如在HTTP-Proxy-Servlet中,当他写:
String proxyRequestUri = rewriteUrlFromRequest(servletRequest);
你可以这样写:
String proxyRequestUri = servletRequest.getRequestURL().toString();
我并不是说这是您必须做出的唯一改变,但这是一个开始。
或者,您可以使用请求中的其他 getter 重建 URL:
getScheme
(http、https 等)getServerName
getServerPort
(可能是 80)getRequestURI
getQueryString
或getParameterNames
/getParameterValues
(出于某种原因,当您在 Google 中输入“java proxy servlet”时,出现的第一个结果是 HTTP-Proxy-Servlet。但是在我看来,它实际上并没有那么有用,因为它只指向一个固定的 URL,因为您提到。)
关于java - 如何在 HTTP Proxy Servlet 中动态设置参数 targetURi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21936435/