我正在编写一个基于 Java 的 Web 应用程序,它在实际生产环境中将由另一个应用程序作为前端,该应用程序将在请求到达我的应用程序之前设置某些 HTTP 请求标头。
但是,在开发环境中,我没有前端应用程序,为此我需要创建一个模拟相同行为的模拟 Web 应用程序。即这个模拟应用程序应该设置请求标头并重定向或转发或我不知道的任何内容:) 到我的应用程序中的某个页面。
我怎样才能做到这一点?
我正在编写一个基于 Java 的 Web 应用程序,它在实际生产环境中将由另一个应用程序作为前端,该应用程序将在请求到达我的应用程序之前设置某些 HTTP 请求标头。
但是,在开发环境中,我没有前端应用程序,为此我需要创建一个模拟相同行为的模拟 Web 应用程序。即这个模拟应用程序应该设置请求标头并重定向或转发或我不知道的任何内容:) 到我的应用程序中的某个页面。
我怎样才能做到这一点?
如果您不想按照@user1979427 的建议修改代码,您可以使用代理服务器来修改标头或动态添加标头。
例如,在 Apache HTTPD 中,您将添加如下内容并代理
Header add HEADER "HEADERVALUE"
RequestHeader set HEADER "HEADERVALUE"
请参阅HTTPD 文档
您应该创建一个传递 headername 和 header 值的 AddReqHeaderForFrowardWrapper 请求包装器。并且,覆盖请求标头相关的方法以返回您的自定义标头。
您可以使用 Tracer 来实现这一点。有可用的框架来支持这种实现。Spring 提供了 Sleuth、Zipkin、OpenTracing。我发现 OpenTracing 易于使用,无需担心依赖冲突。在此处阅读更多信息:https ://opentracing.io/guides/java/
我没有编写模拟应用程序,而是使用了允许我添加自定义标题的浏览器插件!
要在 java 中设置标头,您可以使用:
request.setHeader(attributeName, attributeValue);
对于重定向到另一个页面,您可以使用:
request.sendRedirect(URL);