java - 如何在 HTTP Proxy Servlet 中动态设置参数 targetURi

标签 java http servlets proxy

早上好,我决定创建一个 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
  • getQueryStringgetParameterNames/getParameterValues

(出于某种原因,当您在 Google 中输入“java proxy servlet”时,出现的第一个结果是 HTTP-Proxy-Servlet。但是在我看来,它实际上并没有那么有用,因为它只指向一个固定的 URL,因为您提到。)

关于java - 如何在 HTTP Proxy Servlet 中动态设置参数 targetURi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21936435/

相关文章:

java - 检索所有记录但控制台中仍显示错误

java - 将进程输入流数据写入 GUI

java - 为什么我们需要@GenerateValue?

java - 如何使用 Apache HttpClient 将参数添加到 HTTP header

asp.net - 使用 WCF 通过 Http 和 Https 调用 Web 服务

http - Angular 2 : Get JSON content from HTTP response

java - 提供静态内容的 Tomcat

java - spring-data-jdbc 错误未找到类所需的标识符属性

java - 无法从 module-info.java 中找到模块

java - Tomcat工作时超时