HTTP - Параметры

Эта глава собирается перечислить некоторые из важных параметров протокола 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.