小编典典

Spring-如何为我返回的所有响应添加标头?

java

可以说我有一个Spring REST API,该代码在整个代码中都有很多返回。

如果我想在发送的每个响应中都返回两个特定的标头,那么与返回之前手动将其手动添加到每个响应中相比,我如何以一种更智能的方式来做到这一点?

有没有一种机制可以让我在发送响应之前捕获响应并添加标题?

编辑:对于未来的访客问这个问题。这里没有任何答案实际上会导致拦截器正常工作。我建议去别处。


阅读 272

收藏
2020-11-30

共1个答案

小编典典

正确的答案是使用过滤器。拦截器对此并不正确,无论网上有人怎么说。拦截器无法正常工作。

可行的解决方案是创建一个过滤器,如下所示:

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>
2020-11-30