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

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

1 ответ

Решение

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

void doFilter (запрос ServletRequest, ответ ServletRequest) {
  chain.doFilter(запрос, новый HttpServletResponseWrapper(ответ) {
      public void setHeader(имя строки, значение строки) {
          if (!"etag".equalsIgnoreCase(name)) {
              super.setHeader(имя, значение);
          }
      }
  });
}

И в web.xml:

  <Фильтр>
    noetag<имя-фильтра /><имя-фильтра>
    <Фильтр-класс>foo.NoEtagFilter
  
  <Фильтр-отображение>
    noetag<имя-фильтра /><имя-фильтра>
    <Имя сервлета /><сервлет-имя> по умолчанию<Диспетчер>REQUEST
    <Диспетчер>ВПЕРЕД
  
Другие вопросы по тегам