RFC: 2068
Оригинал: Hypertext Transfer Protocol - HTTP/1.1
Другие версии: RFC 2616
Категория: Предложенный стандарт
Дата публикации:
Авторы: , , , ,
Перевод: Алексей Симонов

2.2. Основные правила

Следующие правила используются в продолжение всей этой спецификации для описания основных конструкций синтаксического анализа. Кодированный набор символов US-ASCII определен в ANSI X3.4-1986 [21].

OCTET          = <любая 8-битная последовательность данных>

CHAR           = <любой US-ASCII символ (октеты 0 - 127)>

UPALPHA        = <любой US-ASCII символ верхнего регистра
                  "A".."Z">

LOALPHA        = <любой US-ASCII символ нижнего регистра
                  "a".."z">

ALPHA          = UPALPHA | LOALPHA

DIGIT          = <любая US-ASCII цифра "0".."9">

CTL            = <любой US-ASCII управляющий символ (октеты
                 0 - 31) и DEL (127)>

CR             = <US-ASCII CR, возврат каретки (13)>

LF             = <US-ASCII LF, перевод строки (10)>

SP             = <US-ASCII SP, пробел (32)>

HT             = <US-ASCII HT, метка горизонтальной
                  табуляции (9)>

<">            = <US-ASCII двойные кавычки (34)>

HTTP/1.1 определяет последовательность CR LF как метку конца строки во всех элементах протокола, за исключением тела объекта (смотрите приложение 19.3 о допустимых применениях (tolerant applications)). Метка конца строки внутри тела объекта определяется соответствыющим медиа типом, как описано в разделе 3.7.

CRLF           = CR LF

HTTP/1.1 заголовки занимают несколько строк, если следующая строка начинается с пробела или метки горизонтальной табуляции. Все незаполненное пространство строки, включая переход на следующую строку, имеет ту же семантику, что и SP.

LWS            = [CRLF] 1*( SP | HT )

Правило TEXT используется только для описательного содержимого поля и значений, которые не предназначены, для интерпретации синтаксическим анализатором сообщений. Слова *TEXT могут содержать символы из наборов символов (character sets), отличных от ISO 8859-1 [22], только когда они закодированы согласно правилам RFC 1522 [14].

TEXT           = <любой OCTET, за исключением CTLs,
                  но содержащий LWS>

Шестнадцатеричные цифры используются некоторыми элементами протокола.

HEX            = "A" | "B" | "C" | "D" | "E" | "F"
               | "a" | "b" | "c" | "d" | "e" | "f" | DIGIT

Многие значения полей заголовка HTTP/1.1 состоят из слов, разделенных LWS или специальными символами. Эти специальные символы ДОЛЖНЫ находиться в цитируемой строке (quoted string), чтобы быть использованными в качестве значения параметра.

token          = 1*<любой CHAR за исключением CTLs или
                    tspecials>

tspecials      = "(" | ")" | "<" | ">" | "@"
               | "," | ";" | ":" | "\" | <">
               | "/" | "[" | "]" | "?" | "="
               | "{" | "}" | SP | HT

В некоторые поля HTTP заголовка могут быть включены комментарии. Текст комментария окружается круглыми скобками. Комментарии допускаются только в полях, содержащих "comment" как часть определения значения поля. Во всех других полях круглые скобки рассматриваются частью значения поля.

comment        = "(" *( ctext | comment ) ")"

ctext          = <любой TEXT не включающий "(" and ")">

Строка текста анализируется как одно слово, если это цитирование, помеченное двойными кавычками.

quoted-string  = ( <"> *(qdtext) <"> )

qdtext         = <любой TEXT не включающий <">>

Символ наклонной черты влево ("\") может использоваться как односимвольный механизм цитирования только внутри конструкций комментария и строки цитирования (quoted-string).

quoted-pair    = "\" CHAR
2007 - 2017 © Русские переводы RFC, IETF, ISOC.