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 ]]

Здесь, если port пусто или не задано, порт 80 предполагается для HTTP и пустой abs_path эквивалентен abs_pathиз "/". Персонажи, не входящие вreserved и unsafe наборы эквивалентны их кодировке ""% "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поля заголовка, чтобы обеспечить открытую и расширяемую типизацию данных и согласование типов. Все значения Media-type зарегистрированы в Internet Assigned Number Authority (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.