«Самое консервативное» преобразование в GMT?

В разделе 19.3 «Толерантные приложения» HTTP 1.1 RFC (2616) говорится о синтаксическом анализе дат из клиентских приложений HTTP:

Если заголовок HTTP неправильно содержит значение даты с часовым поясом, отличным от GMT, он ДОЛЖЕН быть преобразован в GMT с использованием наиболее консервативного возможного преобразования.

Два вопроса:

  1. Означает ли это, что сервер ДОЛЖЕН преобразовывать значение даты, отличное от GMT, в GMT? Или это означает, что если (необязательно) он решит преобразовать значение даты, отличное от GMT, в GMT (а не отклонить его), то он ДОЛЖЕН использовать наиболее консервативное возможное преобразование?

  2. Что подразумевается под «наиболее консервативной конверсией»?

Изменить Хотя это уже старый вопрос, мне все еще интересно узнать ответ, если он у кого-то есть.


person Ian Goldby    schedule 12.07.2012    source источник
comment
Хм, вы автор билета ietf trac об этом? ?   -  person Michał Górny    schedule 25.08.2012
comment
Нет я не. Я хотел знать, потому что я писал HTTP-сервер.   -  person Ian Goldby    schedule 28.08.2012
comment
Ах, тогда я только что дал вам ссылку на trac ticket об этом ;).   -  person Michał Górny    schedule 28.08.2012
comment
Ух ты. Кто-то явно считал, что на этот вопрос нужен правильный ответ, и знал, где его задать. Спасибо за ссылку.   -  person Ian Goldby    schedule 28.08.2012


Ответы (1)


Означает ли это, что сервер ДОЛЖЕН преобразовывать значение даты, отличное от GMT, в GMT? Или это означает, что если (необязательно) он решит преобразовать значение даты, отличное от GMT, в GMT (а не отклонить его), то он ДОЛЖЕН использовать наиболее консервативное возможное преобразование?

Это действительно то, что более специфично для рассматриваемой области, чем то, что применяется в целом. Существует черновик рабочей группы, который заменит RFC 2616, в котором говорится о преобразовании в кеши:

  • Клиенты и кэши HTTP/1.1 ДОЛЖНЫ предполагать, что дата RFC-850, которая кажется более чем на 50 лет в будущем, на самом деле находится в прошлом (это помогает решить проблему «2000 года»).
  • Хотя все форматы даты указаны с учетом регистра, получатели ДОЛЖНЫ сопоставлять имена дней, недель и часовых поясов без учета регистра.
  • Реализация HTTP/1.1 МОЖЕТ внутренне представлять проанализированную дату Expires как более раннюю, чем правильное значение, но НЕ ДОЛЖНА внутренне представлять проанализированную дату Expires как более позднюю, чем правильное значение.
  • Все расчеты, связанные с истечением срока действия, ДОЛЖНЫ выполняться по Гринвичу. Местный часовой пояс НЕ ДОЛЖЕН влиять на расчет или сравнение возраста или времени истечения срока действия.
  • Кэши ДОЛЖНЫ считать даты с часовыми поясами, отличными от «GMT», недействительными.

Что подразумевается под «наиболее консервативной конверсией»?

В этом контексте это, похоже, не означает ничего конкретного, кроме того, что при столкновении с двумя результатами выберите наиболее «консервативную» дату в зависимости от контекста даты.

Учитывая 2 даты, которые были проанализированы нечетко, в контексте заголовка Last-modified наиболее консервативным будет «более поздний». Но в контексте заголовка Expires более ранний из 2 является более консервативным. Все, что требует значительного количества предположений, должно просто возвращать ответ об ошибке.

person Jon Lin    schedule 25.08.2012