HTTP справочник

Внимание

Данный материал является частью цикла статей «Протокол HTTP». Не забудьте посмотреть другие статьи по этой теме :-)

  1. HTTP - обзор основных концепций протокола
  2. Архитектурные аспекты HTTP
  3. HTTP - идентификация клиента
  4. HTTP - механизмы аутентификации
  5. HTTP - безопасность, TLS и сертификаты
  6. HTTP справочник

Методы запроса

Список методов HTTP-запроса (глаголы).

Методы запроса

Метод Описание Имеет тело?
CONNECT В этой спецификации зарезервировано имя метода CONNECT для использования с прокси-сервером, который может динамически переключаться на туннель (например, SSL-туннель). Нет
DELETE Метод DELETE запрашивает у исходного сервера удаление ресурса, указанного в Request-URI. Нет
GET Метод GET извлекает любую информацию (в форме объекта), идентифицированную Request-URI. Нет
HEAD Метод HEAD идентичен GET, за исключением того, что сервер НЕ ДОЛЖЕН возвращать тело сообщением в ответе. Нет
OPTIONS Метод OPTIONS представляет собой запрос информации о вариантах связи, доступных в цепочке запросов/ответов, идентифицированных Request-URI. Нет
POST Метод POST используется для запроса, чтобы исходный сервер принял объект, заключенный в запросе, в качестве нового подчиненного ресурса. идентифицируется Request-URI в строке запроса. Да
PUT Метод PUT запрашивает, чтобы вложенная сущность была сохранена под предоставленным Request-URI. Да
TRACE Метод TRACE используется для вызова удаленного обратного цикла на уровне приложения для сообщения запроса. Нет

Коды статуса

Эти две таблицы определяют диапазоны кодов состояния (классификацию) и описывают все коды состояния.

Классификация кодов состояния

Общий диапазон Определенный диапазон Категория
100–199 100–101 Информационное
200–299 200–206 Успешное
300–399 300–305 Перенаправление
400–499 400–415 Ошибка клиента
500–599 500–505 Ошибка сервера

Более подробное описание кодов состояния

Код ответа Ответ Значение
100 Continue Получена начальная часть запроса, и клиент может продолжить.
101 Switching Protocols Сервер меняет протоколы, как указано клиентом, на тот, который указан в заголовке "Upgrade".
200 OK Успешный запрос.
201 Created Ресурс был создан (для запросов, которые создают новые объект с помощью сервера).
202 Accepted Запрос был принят, но сервер не пока не выполнял с ним никаких действий.
203 Non-Authoritative Information Транзакция прошла успешно, за исключением информации, содержащейся в заголовках объекта, которая была получена не с исходного сервера, а с копии ресурса.
204 No Content Ответное сообщение содержит заголовки и строку состояния, но без тела объекта.
205 Reset Content Другой код, предназначенный для браузеров; в основном означает, что браузер должен очистить все элементы HTML-формы на текущей странице.
206 Partial Content Частичный запрос был выполнен успешно.
300 Multiple Choices Клиент запросил URL-адрес, который ссылается к нескольким ресурсам. Этот код возвращается вместе со списком опций; затем пользователь может выбрать тот, который ему нужен.
301 Moved Permanently Запрошенный URL-адрес был перемещен. Ответ должен содержать URL-адрес местоположения, указывающий, где сейчас находится ресурс.
302 Found Как код состояния 301, но с временным перемещением. Клиент должен использовать URL, указанный в заголовке Location, чтобы временно найти этот ресурс.
303 See Other Сообщает клиенту, что ресурс должен быть извлечен используя другой URL. Этот новый URL-адрес находится в заголовке Location ответного сообщения.
304 Not Modified Клиенты могут обусловливать свои запросы заголовками запросов, которые они включают. Этот код указывает на то, что ресурс не изменился.
305 Use Proxy Доступ к ресурсу должен осуществляться через прокси, расположение прокси указано в заголовке Location.
306 (Unused) Этот код состояния в настоящее время не используется.
307 Temporary Redirect Как код статуса 301; однако клиент должен использовать URL-адрес, указанный в заголовке Location, чтобы временно найти ресурс.
400 Bad Request Сообщает клиенту, что он отправил неверный запрос.
401 Unauthorized Возвращается вместе с соответствующими заголовками, которые просят клиента аутентифицировать себя, прежде чем он сможет получить доступ к ресурсу.
402 Payment Required В настоящее время этот код состояния не используется, но он был отложен для использования в будущем.
403 Forbidden Запрос был отклонен сервером
404 Not Found Запрашиваемый ресурс не найден
405 Method Not Allowed Запрос был сделан с помощью метода, который не поддерживается для запрошенного URL. Заголовок Allow должен быть включен в ответ, чтобы сообщить клиенту, какие методы разрешены для запрошенного ресурса.
406 Not Acceptable Клиенты могут указать параметры того, какие типы сущностей они готовы принять. Этот код используется, когда на сервере нет ресурса, соответствующего URL-адресу, приемлемому для клиента.
407 Proxy Authentication Required Подобен коду состояния 401, но используется для прокси-серверов, требующих аутентификации для ресурса.
408 Request Timeout Если клиенту требуется слишком много времени для выполнения своего запроса, сервер может отправить обратно этот код состояния и закрыть соединение.
409 Conflict Запрос вызывает конфликт на ресурсе.
410 Gone Как код состояния 404, за исключением того, что сервер когда-то хранил этот ресурс.
411 Length Required Серверы используют этот код, когда им требуется заголовок Content-Length в сообщении запроса. Сервер не будет принимать запросы на ресурс без заголовка Content-Length.
412 Precondition Failed Если клиент делает условный запрос и одно из условий не выполняется, возвращается этот код ответа.
413 Request Entity Too Large Клиент отправил тело объекта, которое больше, чем сервер может или хочет обработать.
414 Request URI Too Long Клиент отправил запрос с URL-адресом запроса, который больше того, что сервер может или хочет обработать.
415 Unsupported Media Type Клиент отправил объект типа контента, который сервер не понимает или не поддерживает.
416 Requested Range Not Satisfiable В сообщении с запросом запрашивается диапазон данного ресурса, и этот диапазон либо недействителен, либо не может быть соблюден.
417 Expectation Failed Запрос содержал ожидание в заголовке запроса Expect, которое не могло быть выполнено сервером.
500 Internal Server Error Сервер обнаружил ошибку, которая помешала ему обработать запрос
501 Not Implemented Клиент сделал запрос, который выходит за рамки возможностей сервера.
502 Bad Gateway Сервер, действующий как прокси или шлюз, обнаружил поддельный ответ от следующей ссылки в цепочке ответов на запрос.
503 Service Unavailable В настоящее время сервер не может обслуживать запрос, но сможет это сделать в будущем.
504 Gateway Timeout Аналогичен коду состояния 408, за исключением того, что ответ приходит от шлюза или прокси, у которого истекло время ожидания ответа на свой запрос от другого сервера.
505 HTTP Version Not Supported Сервер получил запрос в версии протокола, которую он не может или не поддерживает.

Заголовки

И HTTP-запрос, и HTTP-ответ могут содержать поля заголовка. Эти две таблицы описывают эти поля и предоставляют простые примеры.

Заголовки запроса

Заголовок Описание Пример
Accept Может использоваться для указания определенных типов носителей, приемлемых для ответа. Accept: text/plain
Accept-Charset Указывает, какие наборы символов приемлемы для ответа. Accept-Charset: utf-8
Accept-Encoding Аналогичен Accept, но ограничивает допустимые в ответе кодировки содержимого. Accept-Encoding: gzip, deflate
Accept-Language Аналогично Accept, но ограничивает набор естественных языков, которые предпочтительны в качестве ответа. Accept-Language: en-US
Authorization Учетные данные для HTTP-аутентификации. Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Cache-Control Используется для указания директив, которым должны подчиняться все механизмы кэширования в цепочке запрос-ответ. Cache-Control: no-cache
Connection Позволяет отправителю указывать параметры, которые требуются для этого конкретного соединения, и НЕ ДОЛЖНЫ передаваться прокси-серверами через другие соединения Connection: keep-alive
Content-Encoding Content-Encoding в основном используется для сжатия документа без потери идентичности его базового типа носителя. Content-Encoding: gzip
Cookie Файл cookie HTTP, ранее отправленный сервером с помощью Set-Cookie Cookie: $Version=1;
Content-Length Длина тела запроса в октетах (8-битных байтах). Content-Length: 1024
Content-MD5 Двоичная сумма MD5 в кодировке Base64 содержимого тела запроса. Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==
Content-Type MIME-тип тела запроса (используется с запросами POST и PUT). content3
Date Дата и время отправки сообщения. Date: Tue, 19 Jun 2012 10:10:10 GMT
Expect Указывает, что клиенту требуется определенное поведение сервера. Expect: 100-continue
From Электронный адрес пользователя, отправившего запрос. From: testmail@gmail.com
Host Доменное имя сервера (для виртуального хостинга) и номер TCP-порта, на котором сервер прослушивает. Номер порта можно не указывать, если порт является стандартным для запрашиваемой услуги. Обязательно с HTTP/1.1. Host: test-website.com
If-Match Выполняет действие только в том случае, если предоставленная клиентом сущность соответствует той же сущности на сервере. Это в основном для таких методов, как PUT, чтобы обновлять ресурс только в том случае, если он не был изменен с момента последнего обновления пользователем. If-Match: "737060cd8c284d8af7ad3082f209582d"
If-Modified-Since Позволяет возвращать 304 Not Modified, если содержимое не изменилось. If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
If-None-Match Позволяет возвращать 304 Not Modified, если содержимое не изменилось. If-None-Match: "737060cd8c284d8af7ad3082f209582d"
If-Range Если объект не изменился, пришлите мне недостающие части; в противном случае пришлите мне новый объект целиком. If-Range: "737060cd8c284d8af7ad3082f209582d"
If-Unmodified-Since Отправляйте ответ только в том случае, если объект не изменялся с определенного времени. If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT
Max-Forwards Ограничьте количество раз, когда сообщение может быть переадресовано через прокси или шлюзы. Max-Forwards: 10
Origin Инициирует запрос на совместное использование ресурсов между источниками (запрашивает у сервера поле ответа «Access-Control-Allow-Origin»). Origin: http://test1.test-website.com
Pragma Заголовки, зависящие от реализации, которые могут иметь различные эффекты в любом месте цепочки запрос-ответ. Pragma: no-cache
Proxy-Authorization Учетные данные для подключения к прокси. Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Range Запросить только часть объекта. Байты нумеруются от 0. Range: bytes=500-999
Referer Это адрес предыдущей веб-страницы, с которой переходили по ссылке на текущую запрашиваемую страницу. (Слово «реферер» написано с ошибками в RFC, а также в большинстве реализаций.) Referer: http://test1.test-website.com
TE Кодировки передачи, которые пользовательский агент готов принять: могут использоваться те же значения, что и для заголовка ответа TE, плюс значение 'trailers' (связанное с методом 'chunked' передачи) для уведомления сервера, который он ожидает получить дополнительные заголовки (трейлеры) после последнего фрагмента нулевого размера. TE: trailers, deflate
Upgrade Попросить сервер перейти на другой протокол. Upgrade: HTTPS/1.3, IRC/6.9, RTA/x11, websocket
User-Agent Информации о клиенте (браузере пользователя) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0
Via Сообщает серверу о прокси, через который был отправлен запрос. Via: 1.0 fred, 1.1 example.com (Apache/1.1)
Warning Общее предупреждение о возможных проблемах с телом сущности. Warning: 199 Miscellaneous warning

Заголовки ответа

Заголовок Описание Пример
Access-Control-Allow-Origin Указание того, какие веб-сайты могут участвовать в совместном использовании ресурсов из разных источников. Access-Control-Allow-Origin: *
Accept-Ranges Позволяет серверу указать, что он принимает запросы диапазона для ресурса. Accept-Ranges: bytes
Age Передает оценку отправителя количества времени с момента создания ответа (или его повторной проверки) на исходном сервере. Age: 24
Allow Перечисляет набор методов, поддерживаемых ресурсом, указанным в Request-URI. Назначение этого поля - строго информировать получателя о допустимых методах, связанных с ресурсом. Allow: GET, HEAD, PUT
Cache-Control Сообщает всем механизмам кэширования от сервера к клиенту, могут ли они кэшировать этот объект. Измеряется в секундах. Cache-Control: max-age=3600
Connection Параметры, которые требуются для подключения. Connection: close
Content-Encoding Тип кодировки, используемой для данных. См. Сжатие HTTP. Content-Encoding: gzip
Content-Language Язык, на котором написано содержимое. Content-Language: en
Content-Length Длина тела ответа в октетах (8-битных байтах) Content-Length: 1024
Content-Location Альтернативное расположение содержимого. Content-Location: /index.htm
Content-MD5 Двоичная сумма MD5 в кодировке Base64 содержимого ответа. Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==
Content-Disposition Возможность вызвать диалоговое окно «Загрузка файла» для известного типа MIME в двоичном формате или предложить имя файла для динамического содержимого. Цитаты обязательны со специальными символами. Content-Disposition: attachment; filename="fname.ext"
Content-Range Где в полном теле сообщения это частичное сообщение. Content-Range: bytes 21010-47021/47022
Content-Type MIME-тип этого контента Content-Type: text/html; charset=utf-8
Date Дата и время отправки сообщения. Date: Sun, 17 Jun 2017 10:11:12 GMT
ETag Идентификатор конкретной версии ресурса, чаще всего дайджест сообщения. ETag: "737060cd8c284d8af7ad3082f209582d"
Expires Указывает дату/время, после которых ответ считается устаревшим. Expires: Date: Sun, 17 Jun 2017 10:11:12 GMT
Last-Modified Дата последнего изменения запрошенного объекта в формате RFC 2822 Last-Modified: Date: Sun, 17 Jun 2017 10:11:12 GMT
Link Используется для выражения типизированной связи с другим ресурсом, где тип связи определяется RFC 5988 Link: ; rel="alternate"
Location Используется при перенаправлении или при создании нового ресурса. Location: http://test1.test-website.com/index.html|
P3P Этот заголовок предназначен для установки политики платформы для проекта настроек конфиденциальности (P3P) в форме P3P: CP='your_compact_policy'. Однако P3P не стал популярным, большинство браузеров никогда полностью не реализовали его, многие веб-сайты устанавливают этот заголовок с поддельным текстом политики, этого было достаточно, чтобы обмануть браузеры существованием политики P3P и предоставить разрешения для сторонних файлов cookie. P3P: CP="This is not a P3P policy! See http://www.google.com/support/ accounts/bin/answer.py?hl=en&answer=151657 for more info."
Pragma Заголовки, зависящие от реализации, которые могут иметь различные эффекты в любом месте цепочки запрос-ответ. Pragma: no-cache
Proxy-Authenticate Запросить аутентификацию для доступа к прокси. Proxy-Authenticate: Basic
Refresh Используется при перенаправлении или при создании нового ресурса. Это обновление перенаправляется через 5 секунд. Это проприетарное нестандартное расширение заголовка, представленное Netscape и поддерживаемое большинством веб-браузеров. Refresh: 5; url=http://test1.test-website.com/index.html
Retry-After Если объект временно недоступен, это указывает клиенту повторить попытку через определенный период времени (секунды). Retry-After: 240
Server Имя сервера Server: Apache/2.4 (Unix)
Set-Cookie Устанавливает HTTP cookie Set-Cookie: UserID=1; Max-Age=3600; Version=1
Strict-transfer-Security Политика HSTS, информирующая HTTP-клиента о том, как долго следует кэшировать политику HTTPS-only и применяется ли это к поддоменам. Strict-transfer-Security: max-age=16070400; includeSubDomains
Trailer Значение общего поля трейлера указывает, что данный набор полей заголовка присутствует в трейлере сообщения, закодированного с помощью кодирования передачи по частям. Trailer: Max-Forwards
Transfer-Encoding Форма кодирования, используемая для безопасной передачи объекта пользователю. В настоящее время определены следующие методы: chunked, compress, deflate, gzip, identity. Transfer-Encoding: chunked
Vary Сообщает нижестоящим прокси, как сопоставлять заголовки будущих запросов, чтобы решить, можно ли использовать кешированный ответ, вместо того, чтобы запрашивать новый с исходного сервера. Vary: *
Via Информирует клиента о прокси, через которые был отправлен ответ. Via: 1.0 mick, 1.1 baselogic.com (Apache/2.4)
Warning Общее предупреждение о возможных проблемах с телом сущности. A general warning about possible problems with the entity body.
WWW-Authenticate Указывает схему аутентификации, которая должна использоваться для доступа к запрошенному объекту. WWW-Authenticate: Basic

MIME-типы

Из-за огромного количества типов Интернет-медиа, здесь перечислены только наиболее часто используемые.

Основные MIME-типы

Тип Описание
application Формат содержимого для конкретного приложения (дискретный тип)
audio Аудиоформат (дискретный тип)
chemical Набор химических данных (дискретное расширение типа IETF)
image Формат изображения (дискретный тип)
message Формат сообщения (составной тип)
model Формат 3-D модели (дискретное расширение IETF)
multipart Набор нескольких объектов (составной тип)
text Текстовый формат (дискретный тип)
video Формат видео (дискретный тип)

MIME-типы приложений

Тип Описание
application/atom+xml Каналы Atom
application/ecmascript ECMAScript/JavaScript (эквивалент application/javascript, но с более строгими правилами обработки)
application/json Обозначение объекта JavaScript JSON
application/javascript ECMAScript/JavaScript (эквивалент application/ecmascript, но с более свободными правилами обработки) Не поддерживается в IE 8 или более ранних версиях.
application/octet-stream Неклассифицированные двоичные данные.
application/pdf Формат переносимого документа
application/postscript PostScript
application/rss+xml RSS-каналы
application/soap+xml SOAP
application/font-woff Формат открытого веб-шрифта
application/xhtml+xml XHTML
application/xml-dtd Файлы определения типа документа (DTD)
application/xop+xml XML-двоичная оптимизированный пакет (XOP)
application/zip Файлы ZIP-архива
application/gzip Gzip

Составные MIME-типы

Тип Описание
multipart/mixed MIME Email
multipart/form-data MIME веб-форма

Текстовые MIME-типы

Тип Описание
text/css Каскадные таблицы стилей
text/csv Значения, разделенные запятыми
text/html HTML файл
text/plain Текстовые данные
text/xml Расширяемый язык разметки

Все, что упомянуто в этой справочной статье, можно найти более подробно в документе спецификации HTTP 1.1:

http://www.ietf.org/rfc/rfc2616.txt