How to disable ETag headers in Tomcat
11,207
No way disable out of the box. But ETags are set by the DefaultServlet via request.setHeader(). So an easy workaround to disable them is to create a filter for DefaultServlet which swallows the tag. For example:
void doFilter(ServletRequest request, ServletRequest reponse) { chain.doFilter(request, new HttpServletResponseWrapper(response) { public void setHeader(String name, String value) { if (!"etag".equalsIgnoreCase(name)) { super.setHeader(name, value); } } }); }
And in web.xml:
<filter> <filter-name>noetag</filter-name> <filter-class>foo.NoEtagFilter</filter-class> </filter> <filter-mapping> <filter-name>noetag</filter-name> <servlet-name>default</servlet-name> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>
Related videos on Youtube
Author by
Ben Williams
Updated on September 17, 2022Comments
-
Ben Williams over 1 year
Tomcat seems to send an ETag header with each response by default. I'd like to disable these for reasons outlined here. I know I can strip them out in my Apache configuration, but is there any way to disable them on the Tomcat side?