当前位置: 首页 > 面试题库 >

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

冯泓
2023-03-14
问题内容

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

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

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

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


问题答案:

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

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

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>


 类似资料:
  • 假设我有一个Spring REST API,它在整个代码中返回了很多很多响应。 如果我想在发出的每一个响应中返回两个特定的头,我该如何以比在返回之前手动将它们添加到每一个响应中更智能的方式做到这一点呢? 有没有一种机制可以让我在发送之前捕捉响应,并添加报头?

  • 问题内容: 我想返回axios的响应,但始终返回的响应是不确定的: 控制台始终记录为未定义。他们以任何方式返回此响应。 问题答案: console.log不会等到该功能完全完成后再进行记录。这意味着您将必须进行异步处理,主要有两种方法: 回调-这是当您将函数作为参数传递到现有函数中时,将在axios调用完成后执行。这是如何与您的代码一起使用的: Promise-实现此目的的最简单方法是将其放在函数

  • 我想用响应替换http异常,也就是说,我使用我想返回的responseentity,例如409如果没有通过名称找到用户,509如果没有通过邮件找到用户,我可以确定responseentity中的错误号及其描述吗?如果有,可以举例说明吗?

  • 我正在使用Spring Webflow R2DBC将一些数据插入数据库。 要求提供数据- 控制器 服务 道 主要问题是我不知道如何让它等待所有结果返回并添加到最终

  • 是否有一种简单的方法来确保返回的所有值都为真?在下面的示例中,我有一组表示文件的对象。在继续之前,我想确保所有源文件都存在。我将所有路径传递到测试路径,函数为每个文件返回True/False。 我如何检查所有返回值都是真的?

  • 我正在开发一个带有Spring Cloud的网关,我需要拦截消耗Oauth的请求,然后获取响应并添加带有jwt值的标头(Ouath的响应) 我的筛选代码: 我的服务: 完整代码Gitlab 错误: java.lang.IllegalStateException:块()/块第一()/块最后()被阻塞,线程reactor-超文本传输协议-nio-3不支持 当我使用String token=rep.bl