Джерси истекает Заголовок не работает - PullRequest
4 голосов
/ 05 февраля 2012

Я использую комплект Jersey 1.11 для предоставления некоторого веб-сервиса RESTful.

Каждый раз, когда я просматриваю ресурс REST с помощью Chrome, я замечаю, что для HTTP-заголовка Expires установлено значение Чт, 01 января1970 01:00:00 CET .

Я попытался отредактировать Ответ, добавив:

return Response.ok( myObject ).expires(new Date(System.currentTimeMillis() + 3000)).build();

К сожалению, это добавляет еще один заголовок HTTP Expires вместо замены старого.

В чем проблема?

Ответы [ 4 ]

1 голос
/ 13 марта 2012

FWIW, я вижу точно такое же поведение. Контейнером здесь является JBoss 4.2.3. Это метод PUT с базовой аутентификацией. Мой ответ генерируется так:

Date exp = new Date(System.currentTimeMillis() + lifetime);
return Response.noContent().expires(exp).build();

При вызове cURL это возвращаемые заголовки:

< HTTP/1.1 204 No Content
< Server: Apache-Coyote/1.1
< Pragma: No-cache
< Cache-Control: no-cache
< Expires: Thu, 01 Jan 1970 01:00:00 CET
< X-Powered-By: Servlet 2.4; JBoss-4.2.3.GA (...
< Expires: Tue, 13 Mar 2012 11:08:54 GMT
< Date: Tue, 13 Mar 2012 11:08:24 GMT
< 
0 голосов
/ 09 апреля 2014

У меня та же проблема. Мой обходной путь:

  1. Введите ответ @Context javax.servlet.http.HttpServletResponse response

  2. Сброс объекта ответа response.reset();

  3. Используйте ResponseBuilder для установки заголовков. return Response .ok(icon.getData()) .type(icon.getContentType()) .expires(cal.getTime()) .build();

0 голосов
/ 22 марта 2014

Я обнаружил, что мой сервер приложений (в данном случае JBoss 4.2.3.GA) не позволяет Джерси перезаписывать заголовок таким образом.

Обходной путь:

  1. Вставить объект ответа в метод с помощью параметра:

    @ Context javax.servlet.http.HttpServletResponse response

  2. Установить заголовокдля объекта ответа вместо использования .expires ():

    response.setDateHeader ("Expires", System.currentTimeMillis () + 14400000);

Я использовал # 2 до того, как вызвал .build () в ResponseBuilder, не уверен, что это изменит или нет, когда вы это сделаете.

0 голосов
/ 17 мая 2013

Это сделано для того, чтобы ваш браузер не кэшировал запрошенный ресурс.Сама дата - это отметка времени с нулевыми секундами, начало эры UNIX.

...