相关疑难解决方法(0)

Spring - 处理后修改每个请求的标头(在postHandle中)

我想要做的是,在处理请求后为响应添加新标头.我需要检查已处理的HttpStatus代码(在我的情况下401未经授权)并添加新的标头.我知道Spring有拦截器,但无法按照文档中的说明修改响应:

请注意,HandlerInterceptor的postHandle方法并不总是非常适合与@ResponseBody和ResponseEntity方法一起使用.在这种情况下,HttpMessageConverter在调用postHandle之前写入并提交响应,这使得无法更改响应,例如添加标头.相反,应用程序可以实现ResponseBodyAdvice并将其声明为@ControllerAdvice bean或直接在RequestMappingHandlerAdapter上配置它.

好吧,我实施了ResponseBodyAdvice.是的,它允许修改身体,但我无法修改标头,事件无法找到从控制器返回的状态代码.

使用servlet过滤器的另一个选择也不成功.我需要在filterChain.doFilter(servletRequest, servletResponse);通话后添加标题.但它再次不会修改标头值.有没有办法完成这个简单的任务?

java spring servlets spring-mvc

7
推荐指数
1
解决办法
1万
查看次数

在 doFilter 之后添加响应头

我已经搜索并看到了有关此问题的几个帖子,但没有找到答案如何可能。

我想要做的是在过滤器链之后添加标头,

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletResponse httpResp = (HttpServletResponse) response;

try {
HttpServletResponseWrapper bufferedResponse = new     HttpServletResponseWrapper (httpResp); 

chain.doFilter(request, bufferedResponse);

} finally {   
// header added at this line is not actually being added.        
bufferedResponse.setHeader("ADD A HEADER: ", "HEADER");
}                                     
}
Run Code Online (Sandbox Code Playgroud)

多个帖子都在谈论使用 HttpServletResponseWrapper 是可能的,但它对我不起作用,任何人都可以帮助我。

servlets http-headers servlet-filters

5
推荐指数
1
解决办法
4065
查看次数

如何编写响应过滤器?

有没有办法只处理过滤器中的响应.

下面的代码是否正确?

  public void doFilter(request , response , chain) {
        //code to handle request 
          chain.doFilter(request, response);
        //code to handle response .
  }
Run Code Online (Sandbox Code Playgroud)

java servlets java-ee servlet-filters

2
推荐指数
1
解决办法
2万
查看次数