Эта глава собирается перечислить некоторые из важных параметров протокола HTTP и их синтаксис, как они используются в коммуникации. Например, формат даты, формат URL и т. Д. Это поможет вам при создании сообщений с запросами и ответами во время написания клиентских или серверных программ HTTP. Вы увидите полное использование этих параметров в последующих главах при изучении структуры сообщений для HTTP-запросов и ответов.
Версия HTTP
HTTP использует схему нумерации <major>. <Minor> для указания версий протокола. Версия HTTP-сообщения указывается в поле HTTP-Version в первой строке. Вот общий синтаксис указания номера версии HTTP:
HTTP-Version = "HTTP" "/" 1*DIGIT "." 1*DIGIT
пример
HTTP/1.0 or HTTP/1.1
Унифицированные идентификаторы ресурсов
Унифицированные идентификаторы ресурса (URI) — это просто отформатированная строка без учета регистра, содержащая имя, местоположение и т. Д. Для идентификации ресурса, например веб-сайта, веб-службы и т. Д. Общий синтаксис URI, используемый для HTTP, выглядит следующим образом:
URI = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]
Здесь, если порт пуст или не задан, порт 80 предполагается для HTTP, а пустой abs_path эквивалентен abs_path «/». Символы, отличные от символов в зарезервированных и небезопасных наборах, эквивалентны их кодировке «»% «HEX HEX».
пример
Следующие три URI эквивалентны:
http://abc.com:80/~smith/home.html http://ABC.com/%7Esmith/home.html http://ABC.com:/%7esmith/home.html
Форматы даты / времени
Все HTTP-метки даты / времени ДОЛЖНЫ быть представлены в среднем времени по Гринвичу (GMT) без исключения. Приложениям HTTP разрешается использовать любое из следующих трех представлений меток даты / времени:
Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123 Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036 Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format
Наборы символов
Мы используем наборы символов, чтобы указать наборы символов, которые предпочитает клиент. Несколько наборов символов могут быть перечислены через запятую. Если значение не указано, по умолчанию используется US-ASCII.
пример
Ниже приведены допустимые наборы символов:
US-ASCII or ISO-8859-1 or ISO-8859-7
Кодировки контента
Значение кодирования контента указывает, что алгоритм кодирования использовался для кодирования контента перед его передачей по сети. Кодирование содержимого в основном используется для того, чтобы позволить документу быть сжатым или иным образом преобразованным без потери идентичности.
Все значения кодирования содержимого нечувствительны к регистру. HTTP / 1.1 использует значения кодирования содержимого в полях заголовка Accept-Encoding и Content-Encoding, которые мы увидим в последующих главах.
пример
Ниже приведены действующие схемы кодирования:
Accept-encoding: gzip or Accept-encoding: compress or Accept-encoding: deflate
Типы СМИ
HTTP использует интернет-медиа-типы в полях заголовка Content-Type и Accept , чтобы обеспечить открытую и расширяемую типизацию данных и согласование типов. Все значения типа мультимедиа зарегистрированы Органом по присвоению номеров в Интернете (IANA). Общий синтаксис для указания типа медиа выглядит следующим образом:
media-type = type "/" subtype *( ";" parameter )
Имена типов, подтипов и атрибутов параметров не чувствительны к регистру.
пример
Accept: image/gif
Языковые теги
HTTP использует языковые теги в полях Accept-Language и Content-Language . Языковой тег состоит из одной или нескольких частей: основного языкового тега и, возможно, пустой серии вложенных тегов:
language-tag = primary-tag *( "-" subtag )
Пробелы внутри тега не допускаются, и все теги не чувствительны к регистру.
пример
Примеры тегов включают в себя:
en, en-US, en-cockney, i-cherokee, x-pig-latin
где любой двухбуквенный первичный тег представляет собой аббревиатуру языка ISO-639, а любой двухбуквенный начальный подтэг является кодом страны ISO-3166.