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>