如何在 Tomcat 中禁用 ETag 标头

如何在 Tomcat 中禁用 ETag 标头

Tomcat 似乎默认在每个响应中发送一个 ETag 标头。出于上述原因,我想禁用这些这里。我知道我可以在我的 Apache 配置中删除它们,但是有没有办法在 Tomcat 端禁用它们?

答案1

没有办法立即禁用。但是 ETag 由 DefaultServlet 通过 request.setHeader() 设置。因此,禁用它们的一个简单解决方法是为 DefaultServlet 创建一个过滤器来吞掉该标签。例如:

void doFilter(ServletRequest 请求,ServletRequest 响应) {
  chain.doFilter(请求,新的 HttpServletResponseWrapper(响应){
      公共无效setHeader(字符串名称,字符串值){
          如果(!“etag”.equalsIgnoreCase(名称)){
              超级.setHeader(名称,值);
          }
      }
  });
}

在 web.xml 中:

  <过滤器>
    <过滤器名称>noetag</过滤器名称>
    <filter-class>foo.NoEtagFilter</filter-class>
  </过滤>
  <过滤器映射>
    <过滤器名称>noetag</过滤器名称>
    <servlet 名称>默认</servlet 名称>
    <调度员>请求</调度员>
    <调度员>转发</调度员>
  </filter-mapping>

相关内容