java - Spring - 如何向我返回的所有响应添加 header ?

标签 java spring rest

假设我有一个 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/

相关文章:

java - jackson : Losing type information

java - 如何在代理后面使用 spring-security OAuth2,但仅将 ForwardedHeaderTransformer 用于 OAuth 组件

Java Swagger 不生成端点响应类型为 List<T> 的服务

java - NetBeans - 如何从外部库导入类

java - Spring Controller LoggingAspect不拦截方法

java - Jboss 中 list 主要属性的签名文件摘要无效

休息服务有很多条件

java - 无法为 spring Controller 编码(marshal)类型、XML 输出

c# - 无法检索到 WebApi 的 Post 调用中的冗长 base64(超过 3 MB)字符串。我只是得到 null 而不是数据

python - 从 python 向 web 服务发送 POST 请求