Como desativar cabeçalhos ETag no Tomcat

3

O Tomcat parece enviar um cabeçalho ETag com cada resposta por padrão. Gostaria de desativá-las por motivos descritos aqui . Eu sei que posso retirá-los da minha configuração do Apache, mas existe alguma maneira de desativá-los no lado do Tomcat?

    
por Ben Williams 08.02.2011 / 17:20

1 resposta

8

Não é possível desativar a caixa. Mas ETags são definidos pelo DefaultServlet via request.setHeader (). Portanto, uma solução fácil para desativá-los é criar um filtro para DefaultServlet que engula a tag. Por exemplo:

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

E no 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>
    
por 08.02.2011 / 18:32