Добавление заголовков HTTP в методе PostHandle Spring Interceptor - PullRequest
3 голосов
/ 29 октября 2008

У меня есть Spring Interceptor, который пытается добавить HTTP-заголовок в методе postHandle ().

public void postHandle(HttpServletRequest req, HttpServletResponse resp, 
             Object obj1, ModelAndView mv)
        throws Exception {
        response.setHeader("SomeHeaderSet", "set");
        response.addHeader("SomeHeaderAdd", "added");
    }
}

Однако ни один заголовок не добавляется ни с помощью setHeader (), ни с addHeader ().

Это вообще допустимо делать в перехватчике? Я подумал, что БУДЕТ, но это не сработает.

С уважением, Dustin

Ответы [ 3 ]

1 голос
/ 29 октября 2008

Ну, я понял это ... Вроде ...

Оказывается, та же проблема с Jetty и Tomcat (полагал, что это может быть проблема с контейнером). Итак ...

Отлажено, чтобы гарантировать, что объект ответа содержал правильное значение заголовка вплоть до возврата Spring обратно в контейнер. Результат: экземпляр HttpServletResponse по-прежнему имел правильное значение заголовка.

Я обнаружил в своем коде, что вызывал response.setContentLength() ДО того, как я что-то делал с заголовками. Если я это закомментирую, все будет нормально.

Итак, остается загадкой, почему вызов response.setContentLength() блокирует вещи и не позволяет изменять заголовки? Я не думал, что тело контента имеет какое-либо отношение к другим заголовкам.

1 голос
/ 29 октября 2008

Вы пытались установить заголовки в методе preHandle? Если это не сработает, попробуйте написать фильтр для контейнера и вместо него установить заголовки.

0 голосов
/ 22 июня 2010

У меня была похожая проблема, она работает, когда у меня есть следующее в web.xml (не понял почему)

<filter>
  <filter-name>etagFilter</filter-name>
    <filter-class>org.springframework.web.filter.ShallowEtagHeaderFilter</filter-class>
</filter>

<filter-mapping>
  <filter-name>etagFilter</filter-name>
  <servlet-name>myServlet</servlet-name>
</filter-mapping>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...