我找到了一些修改http header的技巧,但不是我需要的。 我正在编写一个网络应用程序,它修改 http header 并重定向 到目标网络应用程序。交叉应用是个问题。
我的解决方案:
在Tomcat中创建一个Valve
,修改org.apache.catalina.Valve.invoke(Request, Response)
中的header。在 Web 应用程序之前修改请求 header 。
有更好的主意吗?谢谢!
最佳答案
您的意思是以客户不知道的方式“重定向”?听起来像反向代理。
在这种情况下,您可以写 HttpServlet并在其 service(HttpServletRequest req, HttpServletResponse resp)
方法中重写请求参数并向目标服务执行请求(例如使用 HttpClient)。这是独立于平台的解决方案,因为您不基于 Apache 的 Catalina。然而,这两种解决方案(servlet、阀门和可能所有其他解决方案)都有一些缺点。即时代理和修改请求并不像许多有关它的教程所描述的那么简单,尤其是在涉及流式传输或编码等方面时(如果您还想修改内容)。
关于java - 修改 HTTP 头并重定向到其他 Web 应用程序(跨应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9527331/