Kar*_*. V 1 java http-post servlet-filters
我有一个部署在2台主机上的Java Web应用程序,前面是servlet过滤器.我在一台主机上向应用程序发送了一个POST请求,该请求被过滤器拦截并重定向到另一台主机:
public void doFilter (ServletRequest request, ServletResponse response,
FilterChain filterChain)
{
...
if(shouldRedirect) {
httpResponse.sendRedirect(redirectLocation);
}
}
Run Code Online (Sandbox Code Playgroud)
在第二台机器上,请求传递过滤器,并由Resource类中的REST API处理.
@POST
public Response handleRequest(InputStream stream)
{
...
}
Run Code Online (Sandbox Code Playgroud)
该stream对象作为POST请求正文的一部分发送.重定向后,请求正文不会被发送并且stream为空.如何在重定向后保留请求正文(或至少这部分内容)?
谢谢.
我发现的另一种方法是307(临时重定向).这保留了原始请求的正文,因此在这种情况下可以正常工作.307重定向具有详见一些安全隐患这里,但没有充当阻挡HTTP请求的代理原始主机的好处.
public void doFilter(...)
{
...
httpResponse.setStatus(TEMPORARY_REDIRECT);
httpResponse.setHeader("Location", redirectLocation);
return;
}
Run Code Online (Sandbox Code Playgroud)