假设我有一个 Spring REST API,它在整个代码中返回很多很多响应。
如果我想在发送的每个响应中返回两个特定 header ,与在返回之前手动将它们添加到每个响应中相比,我该如何以更智能的方式做到这一点?
是否有一种机制可以让我在发送响应之前捕获响应并添加 header ?
编辑:对于 future 提出这个问题的访客。这里的任何答案都不会真正产生一个有效的拦截器。我建议寻找其他地方。
最佳答案
正确答案是使用过滤器。不管网上的人怎么说,拦截器对此都是不正确的。拦截器无法按预期工作。
工作解决方案是创建一个过滤器,如下所示:
public class myAwesomeFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
response.addHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.addHeader("pragma", "no-cache");
filterChain.doFilter(request, response);
}
}
然后,在 web.xml 中 - 您需要以下内容:
<filter>
<filter-name>sensitiveFormHeaderFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
关于java - Spring - 如何向我返回的所有响应添加 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43481539/