Реферат: Протокол HTTP 1.1
http://abc.com:80/~smith/home.html
http://ABC.com/%7Esmith/home.html h ttp://ABC.com:/%7esmith/home.html
3.3 Форматы даты/времени.
3.3.1 Полная дата.
HTTP приложения исторически допускали три различных формата для представления даты/времени:
Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, дополненный в ; RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, переписанный как ; RFC 1036
Sun Nov 6 08:49:37 1994 ; формат asctime() ANSI C
Первый формат выбран в качестве стандарта Интернета и представляет подмножество фиксированной длины, как определено в RFC 1123 (модифицированном RFC 822). Второй формат находится в общем пользовании, но основан на устаревшем и потерявшем статус стандарта RFC 850, описывающем форматы дат, он обладает тем недостатком, что год указывается не в четырехразрядной нотации. Клиенты и серверы HTTP/1.1, которые анализируют значение даты, должны понимать все три формата (для совместимости с HTTP/1.0), но генерировать для представления значений дат в полях заголовка HTTP должны только формат RFC 1123 .
Прис оздании приложений, желательно, чтобы оно умело воспринимать значения дат, которые, возможно, посланы не HTTP приложениями, а например SMTP или NNTP сообщений через прокси-сервера/шлюзы.
Все без исключений форматы даты/времени в HTTP должны быть представлены в Greenwich Mean Time (GMT). В первых двух форматах данный факт указывается включением трехсимвольного сокращения "GMT" в качестве часового пояса. В asctime() формате это ДОЛЖНО подразумеваться при чтении.
HTTP-date = rfc1123-date | rfc850-date | asctime-date
rfc1123-date = wkday "," SP date1 SP time SP "GMT" rfc850-date = weekday "," SP date2 SP time SP "GMT" asctime-date = wkday SP date3 SP time SP 4DIGIT
date1 = 2DIGIT SP month SP 4DIGIT ; день месяц год (например 02 Jun 1982)
date2 = 2DIGIT "-" month "-" 2DIGIT ; день-месяц-год (например 02-Jun-82)
date3 = month SP ( 2DIGIT | ( SP 1DIGIT )) ; месяц день (например, Jun 2)
time = 2DIGIT ":" 2DIGIT ":" 2DIGIT ; 00:00:00 - 23:59:59
wkday = "Mon" | "Tue" | "Wed" | "Thu" | "Fri" | "Sat" | "Sun"
weekday = "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday" | "Saturday" | "Sunday"
month = "Jan" | "Feb" | "Mar" | "Apr" | "May" | "Jun" | "Jul" | "Aug" | "Sep" | "Oct" | "Nov" | "Dec"
Это требования формата даты/времени, которые применяются внутри потока протокола HTTP. Клиентам и серверам не требуется использовать эти форматы для представления пользователю, регистрации запросов и т.д.
3.3.2 Разность секунд (delta seconds).
Некоторые поля HTTP заголовка позволяют указывать значения времени в виде целого числа секунд, представленного в десятичной форме, которые должны пройти с того момента, как сообщение было получено.
delta-seconds = 1*DIGIT
3.4 Кодовые таблицы (character sets).
HTTP использует то же самое определение термина "кодовая таблица", которое определено для MIME:
Термин "кодовая таблица" используется, чтобы сослаться на метод, использующий одну или несколько таблиц для преобразования последовательности октетов в последовательность символов. Стоит отметить, что однозначное преобразование в обратном направлении не требуется, и что не все символы могут быть доступны в данной кодовой таблице, и что кодовая таблица может обеспечивать более чем одну последовательность октетов для представления специфических символов. Это определение допускает различные виды кодирования символов, от простых однотабличных отображений типа US-ASCII до сложных методов, переключающих таблицы, наподобие тех, которые используют методики ISO 2022. Однако определение, связанное с именем кодовой таблицы MIME должно полностью определять отображение, которое преобразует октеты в символы. В частности использование внешней информации профилирования для определения точного отображения не разрешается.
Кодовые таблицы HTTP идентифицируются лексемами, не чувствительными к регистру. Полный набор лексем определен реестром кодовых таблиц IANA [19].
charset = token