Назад | Перейти на главную страницу

Как отключить заголовки ETag в Tomcat

Кажется, что Tomcat по умолчанию отправляет заголовок ETag с каждым ответом. Я хотел бы отключить их по указанным причинам Вот. Я знаю, что могу удалить их в своей конфигурации Apache, но есть ли способ отключить их на стороне Tomcat?

Ни в коем случае не отключать из коробки. Но ETags устанавливаются DefaultServlet через request.setHeader (). Таким образом, простой обходной путь для их отключения - создать фильтр для DefaultServlet, который проглатывает тег. Например:

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

И в 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>