Что является допустимым форматом даты RFC1123

Я работаю над сервисом, который возвращает заголовок с истекающим сроком действия. Сервис будет работать в другом часовом поясе. Поэтому нам нужен способ вернуть другие часовые пояса, кроме GMT.

Я знаю, что заголовок http должен соответствовать стандартному формату даты RFC1123. Таким образом, служба возвращает дату, как показано ниже:

пт, 01 марта 2019 г., 15:00:00 по Гринвичу

Мне нужно вернуть дату в формате ниже.

Пт, 01 Мар 2019 15:00:00 +0530

Является ли это допустимой датой для формата даты RFC1123?


person Newbee    schedule 28.02.2019    source источник


Ответы (1)


Я предполагаю, что вы используете старый и устаревший RFC 2616. в качестве ссылки. Пожалуйста, имейте в виду, что данный документ в настоящее время уже не актуален и заменен следующими документами:

  • RFC 7230: синтаксис и маршрутизация сообщений
  • RFC 7231: семантика и содержание
  • RFC 7232: условные запросы
  • RFC 7233: запросы диапазона
  • RFC 7234: кэширование
  • RFC 7235: аутентификация

Согласно RFC 7231, даты HTTP должны быть выражены по Гринвичу. Таким образом, выражение дат со смещением от UTC кажется недействительным.


Посмотрите, как определяется заголовок Expires в RFC 7234:

5.3. Истекает

Поле заголовка Expires содержит дату/время, после которого ответ считается устаревшим. [...]

Значение Expires представляет собой отметку времени HTTP-date, как определено в разделе 7.1.1.1 RFC 7231< /а>.

 Expires = HTTP-date

Например

Expires: Thu, 01 Dec 1994 16:00:00 GMT

Теперь посмотрите на следующую цитату из RFC 7231:

7.1.1.1. Форматы даты/времени

До 1995 года серверы обычно использовали три различных формата для передачи меток времени. Для совместимости со старыми реализациями здесь определены все три. Предпочтительным форматом является фиксированная длина и однозонное подмножество спецификации даты и времени, используемое в формате интернет-сообщений [RFC5322].

HTTP-date    = IMF-fixdate / obs-date

Пример предпочтительного формата:

Sun, 06 Nov 1994 08:49:37 GMT    ; IMF-fixdate

Примеры двух устаревших форматов:

Sunday, 06-Nov-94 08:49:37 GMT   ; obsolete RFC 850 format
Sun Nov  6 08:49:37 1994         ; ANSI C's asctime() format

Получатель, анализирующий значение метки времени в поле заголовка HTTP, ДОЛЖЕН принимать все три формата HTTP-date. Когда отправитель создает поле заголовка, содержащее одну или несколько меток времени, определенных как HTTP-date, отправитель ДОЛЖЕН генерировать эти метки времени в формате IMF-fixdate.

Значение HTTP-даты представляет время как экземпляр универсального скоординированного времени (UTC). Первые два формата обозначают UTC трехбуквенной аббревиатурой среднего времени по Гринвичу, GMT, предшественника названия UTC; значения в формате asctime предполагаются в формате UTC. [...]

person cassiomolin    schedule 28.02.2019