gpt4 book ai didi

servlets - 在 doFilter 之后添加响应头

转载 作者:行者123 更新时间:2023-12-02 19:51:32 25 4
gpt4 key购买 nike

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

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

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");
}
}

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

最佳答案

在提交响应后,您无法添加 header (当然可以,但不会有任何效果),因为此时 HTTP header 已全部写入客户端。

您有三个选择。

  1. 在调用 doFilter() 之前编写 header
  2. 在尝试添加 header 之前,请确保(大缓冲区、小响应、未调用flush() 等)响应未提交。
  3. 在 do 过滤器方法之前包装响应,然后在包装器中缓冲整个响应正文,之后添加 header ,然后从缓冲区中写出响应正文。

关于servlets - 在 doFilter 之后添加响应头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24127007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com