Replies (33)

  • @vt, Костылестроение
  • @vt, В java другой rfc, нужный можно создать из шаблона.
  • @O01eg, В rfc2616 написано что http date находится в rfc1123
  • @vt, В rfc2616 сказано, что допустимы только ровно 2 цифры на день
  • @O01eg, Ну и в 1123 так же, я не знаю откуда java взяла одну
  • @vt, В 1123 написано, что можно 1
  • @O01eg, Точнее, в 822, на который ссылается 1123
  • @O01eg, Ну да, 1123 отличается от 822 двумя цифрами в дне и четырьмя цифрами в годе. RFC2616 говорит — принимать надо во всех форматах, а отдавать строго в 1123. Получается, Ruby делает неправильно потому, что не принимает RFC822 формат, а Java делает неправильно, потому что отдает в RFC822-формате (считая будто это 1123)
  • @vt, Где rfc2616 говорит, что нужно принимать во всех форматах? Одна цифра на день разрешена только для ANSI C.
  • @vt, 1123 не требует двух цифр, там также можно 1, как и в 822
  • @O01eg, Ну или так, суть не меняется — дата в том формате, который генерит Java должна приниматься по RFC2616
  • @vt, Java генерирует 1123, HTTP Date — 2616, почему он должен приниматься?
  • @O01eg, HTTP/1.1 clients and servers that parse the date value MUST accept
    all three formats (for compatibility with HTTP/1.0), though they MUST
    only generate the RFC 1123 format for representing HTTP-date values
    in header fields.
  • @vt, Там еще неточность в том, что сначала
    HTTP-date = rfc1123-date | rfc850-date | asctime-date
    А потом date1 в rfc1123-date — 2DIGIT SP month SP 4DIGIT
    То есть либо тут неправильно описан 1123, либо в 1123 неточно
  • @vt, Вот-вот-вот
  • @O01eg, А в 2616 не сказано, что нужно быть толератным к числу цифр в дне
  • @O01eg, Я все из 2616 цитировал
  • @vt, Ну вот там и написано, что 2DIGIT и всё
  • @O01eg, На выходе, а на входе — можно три варианта
  • @vt, Там же и написано, что только в ANSI C можно одну цифру
  • @O01eg, Тебя зациклило :) см /13 и /14
  • @vt, Это обе цитаты из 2616
  • @vt, Вот ещё цитата The first format is preferred as an Internet standard and represents
    a fixed-length subset of that defined by RFC 1123 [8] (an update to
    RFC 822 [9]).
  • @vt, Сам понимаешь, 1*2DIGIT это совсем не fixed-length
  • @O01eg, MUST accept all three formatsЭто относится к формату RFC822 (и RFC1123) — они за один первый формат взяты — потому что суть в
    compatibility with HTTP/1.0А
    fixed-length subset of that defined by RFC 1123Относится к тому что на выходе
  • @vt, Это всё в одном абзаце
  • @O01eg, И? Принимать нужно все варианты — 822, 1123, 850, 1036, asctime
  • @vt, И только подмножества с фиксированной длиной строки
  • @O01eg, Нет, подмножество с фиксированной длиной строки относится к выходному формату
  • @vt, Там еще есть:
    Note: Recipients of date values are encouraged to be robust in accepting date values that may have been sent by non-HTTP
    applications, as is sometimes the case when retrieving or posting
    messages via proxies/gateways to SMTP or NNTP.
  • @vt, У тебя не non-HTTP applications. И "там" про однозначный день ничего не сказано
  • @O01eg, Идем на следующий круг — RFC2616 написан с учетом совместимости со всеми предыдущими стандартами и обязывает принимать даты во всех предыдущих форматах, отдавая только "новый", фиксированный вариант из RFC1123. Если ты пытаешься доказать, что RFC2616 пытается ограничить к приему какие-то старые форматы и сломать совместимость — мы можем ходить по кругу до бесконечности :)
  • @vt, ruby-doc.org регулярка прямо скопипащена из rfc