API

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

header описание
Host имя host, включая домен и поддомен
User-Agent имя и версия браузера, название и версия операционной системы, язык по умолчанию
Accept-Language отображает настройки языка по умолчанию
Accept-Encoding веб-сервер поддерживает gzip и отправляет выходной HTML-код в сжатом формате. Это позволяет уменьшить размер файла до 80% для экономии пропускной способности и времени
If-Modified-Since дата обновления ресурса. Если документ не изменялся с этой даты, сервер отправляет код ответа «304 Not Modified», а содержимое - нет, и браузер загружает содержимое из cache
Cookie отправляет файлы cookie, хранящиеся в браузере для этого домена
Referer содержит ссылочный url
Authorization данные авторизации в кодировке base64

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

header описание
Cache-Control используется для указания директив, которые ДОЛЖНЫ выполняться всеми механизмами кэширования по цепочке запросов-ответов
Content-Type указывается "mime-type" документа (указание браузеру, как интерпретировать содержимое)
Content-Disposition указывает браузеру открыть окно загрузки файла, вместо того, чтобы пытаться проанализировать содержимое
Content-Length размер контента в байтах
Etag используется для кеширования
Last-Modified указывается дата последнего изменения документа в формате GMT
Location используется для перенаправления. Если код ответа 301 или 302, сервер также должен отправить этот header
Set-Cookie информирование, что веб-сайт хочет установить или обновить файл cookie. Каждый файл cookie отправляется как отдельный header. Файлы cookie, установленные с помощью JavaScript, не проходят через HTTP headers
WWW-Authenticate используется для аутентификации пользователя через HTTP. Когда браузер увидит этот header, он откроет диалоговое окно входа в систему
Content-Encoding информирует, что возвращаемое содержимое сжато (например, gzip)

method описание
GET получение (возврат) ресурса
POST создание нового ресурса
PUT обновление ресурса
DELETE удаление ресурса
HEAD запрашивает ресурс так же, как и метод GET, но без тела ответа
CONNECT устанавливает "туннель" к серверу, определенному по ресурсу. Обычно используется при установлении защищённого SSL-соединения через нешифрованный прокси
OPTIONS используется для описания параметров соединения с ресурсом
TRACE выполняет вызов возвращаемого тестового сообщения с ресурса. Возвращает полученный запрос так, что клиент может увидеть, какую информацию промежуточные серверы добавляют или изменяют в запросе
PATCH аналогичен PUT, но используется для частичного изменения ресурса (применяется только к фрагменту ресурса)

protocol описание
file:// доступ к локальной файловой системе
http:// доступ к URL-адресам по протоколу HTTP(s)
ftp:// доступ к URL-адресам по протоколу FTP(s)
ssh2:// Secure Shell 2
glob:// нахождение путей, соответствующих шаблону
data:// схема Data (RFC 2397)
rar:// RAR-архив
phar:// PHP-архив
php:// доступ к различным потокам ввода-вывода
zlib:// сжатые потоки
ogg:// аудиопотоки
expect:// потоки для взаимодействия с процессами

Дополнительно см. раздел Network

status code response ответ описание
100 Continue Продолжить сервер удовлетворён начальными сведениями о запросе, клиент может продолжать пересылать заголовки. Появился в HTTP/1.1
101 Switching Protocols Переключение протокола сервер выполняет требование клиента и переключает протоколы в соответствии с указанием, данным в поле заголовка Upgrade. Сервер отправляет заголовок ответа Upgrade, указывая протокол, на который он переключился. Появился в HTTP/1.1
102 Processing В обработке запрос принят, но на его обработку понадобится длительное время. Используется сервером, чтобы клиент не разорвал соединение из-за превышения времени ожидания. Клиент при получении такого ответа должен сбросить таймер и дожидаться следующей команды в обычном режиме. Появился в WebDAV
103 Early Hints Ранние подсказки используется для раннего возврата части заголовков, когда заголовки полного ответа не могут быть быстро сформированы

status code response ответ описание
200 OK Успешно успешный запрос. Если клиентом были запрошены какие-либо данные, то они находятся в заголовке и/или теле сообщения. Появился в HTTP/1.0
201 Created Создано в результате успешного выполнения запроса был создан новый ресурс. Сервер может указать адреса (их может быть несколько) созданного ресурса в теле ответа, при этом предпочтительный адрес указывается в заголовке Location. Серверу рекомендуется указывать в теле ответа характеристики созданного ресурса и его адреса, формат тела ответа определяется заголовком Content-Type. При обработке запроса новый ресурс должен быть создан до отправки ответа клиенту, иначе следует использовать ответ с кодом 202. Появился в HTTP/1.0
202 Accepted Принято запрос был принят на обработку, но она не завершена. Клиенту не обязательно дожидаться окончательной передачи сообщения, так как может быть начат очень долгий процесс. Появился в HTTP/1.0
203 Non-Authoritative Information Информация не авторитетна аналогично ответу 200, но в этом случае передаваемая информация была взята не из первичного источника (резервной копии, другого сервера и т. д.) и поэтому может быть неактуальной. Появился в HTTP/1.1
204 No Content Нет содержимого сервер успешно обработал запрос, но в ответе были переданы только заголовки без тела сообщения. Клиент не должен обновлять содержимое документа, но может применить к нему полученные метаданные. Появился в HTTP/1.0
205 Reset Content Сбросить содержимое сервер обязывает клиента сбросить введённые пользователем данные. Тела сообщения сервер при этом не передаёт и документ обновлять не обязательно. Появился в HTTP/1.1
206 Partial Content Частичное содержимое сервер удачно выполнил частичный GET-запрос, возвратив только часть сообщения. В заголовке Content-Range сервер указывает байтовые диапазоны содержимого. Особое внимание при работе с подобными ответами следует уделить кэшированию. Появился в HTTP/1.1
207 Multi-Status Мульти-статус сервер передаёт результаты выполнения сразу нескольких независимых операций. Они помещаются в само тело сообщения в виде XML-документа с объектом multistatus. Не рекомендуется размещать в этом объекте статусы из серии 1xx из-за бессмысленности и избыточности. Появился в WebDAV
208 Already Reported Уже сообщается члены привязки DAV уже были перечислены в предыдущей части (multistatus) ответа и не включаются снова
226 IM Used Я привык заголовок A-IM от клиента был успешно принят и сервер возвращает содержимое с учётом указанных параметров. Введено в RFC 3229 для дополнения протокола HTTP поддержкой дельта-кодирования

status code response ответ описание
300 Multiple Choices Множественный выбор по указанному URI существует несколько вариантов предоставления ресурса по типу MIME, по языку или по другим характеристикам. Сервер передаёт с сообщением список альтернатив, давая возможность сделать выбор клиенту автоматически или пользователю. Появился в HTTP/1.0
301 Moved Permanently Перемещен на постоянной основе запрошенный документ был окончательно перенесен на новый URI, указанный в поле Location заголовка. Некоторые клиенты некорректно ведут себя при обработке данного кода. Появился в HTTP/1.0
302 Found Найдено запрошенный ресурс был временно перемещён по адресу, указанному в заголовке Location (en-US)
302 Moved Temporarily Временно переехал запрошенный документ временно доступен по другому URI, указанному в заголовке в поле Location. Этот код может быть использован, например, при управляемом сервером согласовании содержимого. Некоторые клиенты некорректно ведут себя при обработке данного кода. Введено в HTTP/1.0
303 See Other Просмотр других ресурсов документ по запрошенному URI нужно запросить по адресу в поле Location заголовка с использованием метода GET несмотря даже на то, что первый запрашивался иным методом. Этот код был введён вместе с кодом 307 для избежания неоднозначности, чтобы сервер был уверен, что следующий ресурс будет запрошен методом GET. Например, на веб-странице есть поле ввода текста для быстрого перехода и поиска. После ввода данных браузер делает запрос методом POST, включая в тело сообщения введённый текст. Если обнаружен документ с введённым названием, то сервер отвечает кодом 303, указав в заголовке Location его постоянный адрес. Тогда браузер гарантировано его запросит методом GET для получения содержимого. В противном случае сервер просто вернёт клиенту страницу с результатами поиска. Введено в HTTP/1.1
304 Not Modified Не модифицировано сервер возвращает такой код, если клиент запросил документ методом GET, использовал заголовок If-Modified-Since или If-None-Match и документ не изменился с указанного момента. При этом сообщение сервера не должно содержать тела. Появился в HTTP/1.0
305 Use Proxy Использовать прокси запрос к запрашиваемому ресурсу должен осуществляться через прокси-сервер, URI которого указан в поле Location заголовка. Данный код ответа могут использовать только исходные HTTP-сервера (не прокси). Введено в HTTP/1.1
306 Switch Proxy Сменить прокси использовавшийся в ранних версиях спецификации код ответа, в настоящий момент зарезервирован. Упомянут в RFC 2616 (обновление HTTP/1.1). Согласно ранним наброскам, код означал Switch Proxy, указывая клиенту сменить используемый прокси-сервер на указанный сервером в заголовке ответа
307 Temporary Redirect Временное перенаправление запрашиваемый ресурс на короткое время доступен по другому URI, указанный в поле Location заголовка. Метод запроса (GET/POST) менять не разрешается. Например, POST-запрос должен быть отправлен по новому URI тем же методом POST. Этот код был введён вместе с 303-м вместо 302-го для избежания неоднозначности. Введено в RFC 2616
308 Permanent Redirect Перенаправление на постоянной основе запрашиваемый ресурс был окончательно перенесен на новый URI, указанный в поле Location заголовка. Метод запроса (GET/POST) менять не разрешается. Например, POST-запрос должен быть отправлен по новому URI тем же методом POST. Этот код был введён вместо 301-го для избежания неоднозначности. Введено в RFC 7238

status code response ответ описание
400 Bad Request Плохой запрос сервер обнаружил в запросе клиента синтаксическую ошибку. Появился в HTTP/1.0
401 Unauthorized Неавторизовано для доступа к запрашиваемому ресурсу требуется аутентификация. В заголовке ответ должен содержать поле WWW-Authenticate с перечнем условий аутентификации. Иными словами, для доступа к запрашиваемому ресурсу клиент должен представиться, послав запрос, включив при этом в заголовок сообщения поле Authorization с требуемыми для аутентификации данными. Если запрос уже включает данные для авторизации, ответ 401 означает, что в авторизации с ними отказано
402 Payment Required Необходима оплата предполагается использовать в будущем. В настоящий момент не используется. Этот код предусмотрен для платных пользовательских сервисов, а не для хостинговых компаний. Имеется в виду, что эта ошибка не будет выдана хостинговым провайдером в случае просроченной оплаты его услуг. Зарезервирован, начиная с HTTP/1.1
403 Forbidden Запрещено сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу. Иными словами, клиент не уполномочен совершать операции с запрошенным ресурсом. Если для доступа к ресурсу требуется аутентификация средствами HTTP, то сервер вернёт ответ 401, или 407 при использовании прокси. В противном случае ограничения были заданы администратором сервера или разработчиком веб-приложения и могут быть любыми в зависимости от возможностей используемого программного обеспечения. В любом случае серверу следует сообщить причины отказа в обработке запроса. Наиболее вероятными причинами ограничения может послужить попытка доступа к системным ресурсам веб-сервера (например, файлам .htaccess или .htpasswd) или к файлам, доступ к которым был закрыт с помощью конфигурационных файлов, требование аутентификации не средствами HTTP, например, для доступа к системе управления содержимым или разделу для зарегистрированных пользователей либо сервер не удовлетворён IP-адресом клиента, например, при блокировках. Появился в HTTP/1.0
404 Not Found Не найден самая распространённая ошибка при пользовании Интернетом, основная причина — ошибка в написании адреса Web-страницы. Сервер понял запрос, но не нашёл соответствующего ресурса по указанному URL. Если серверу известно, что по этому адресу был документ, то ему желательно использовать код 410. Ответ 404 может использоваться вместо 403, если требуется тщательно скрыть от посторонних глаз определённые ресурсы. Появился в HTTP/1.0
405 Method Not Allowed Метод не разрешён указанный клиентом метод нельзя применить к текущему ресурсу. В ответе сервер должен указать доступные методы в заголовке Allow, разделив их запятой. Эту ошибку сервер должен возвращать, если метод ему известен, но он не применим именно к указанному в запросе ресурсу, если же указанный метод не применим на всём сервере, то клиенту нужно вернуть код 501 (Not Implemented). Появился в HTTP/1.1
406 Not Acceptable Недопустимо запрошенный URI не может удовлетворить переданным в заголовке характеристикам. Если метод был не HEAD, то сервер должен вернуть список допустимых характеристик для данного ресурса. Появился в HTTP/1.1
407 Proxy Authentication Required Требуется проверка подлинности прокси ответ аналогичен коду 401 за исключением того, что аутентификация производится для прокси-сервера. Механизм аналогичен идентификации на исходном сервере. Появился в HTTP/1.1
408 Request Timeout Тайм-аут запроса время ожидания сервером передачи от клиента истекло. Клиент может повторить аналогичный предыдущему запрос в любое время. Например, такая ситуация может возникнуть при загрузке на сервер объёмного файла методом POST или PUT. В какой-то момент передачи источник данных перестал отвечать, например, из-за повреждения компакт-диска или потери связи с другим компьютером в локальной сети. Пока клиент ничего не передаёт, ожидая от него ответа, соединение с сервером держится. Через некоторое время сервер может закрыть соединение со своей стороны, чтобы дать возможность другим клиентам сделать запрос. Этот ответ не возвращается, когда клиент принудительно остановил передачу по команде пользователя или соединение прервалось по каким-то иным причинам, так как ответ уже послать невозможно. Появился в HTTP/1.1
409 Conflict Конфликт запрос не может быть выполнен из-за конфликтного обращения к ресурсу. Такое возможно, например, когда два клиента пытаются изменить ресурс с помощью метода PUT. Появился в HTTP/1.1
410 Gone Пропал такой ответ сервер посылает, если ресурс раньше был по указанному URL, но был удалён и теперь недоступен. Серверу в этом случае неизвестно и местоположение альтернативного документа (например копии). Появился в HTTP/1.1
411 Length Required Указать Content-Length для указанного ресурса клиент должен указать Content-Length в заголовке запроса. Без указания этого поля не стоит делать повторную попытку запроса к серверу по данному URI. Такой ответ естественен для запросов типа POST и PUT. Например, если по указанному URI производится загрузка файлов, а на сервере стоит ограничение на их объём. Тогда разумней будет проверить в самом начале заголовок Content-Length и сразу отказать в загрузке, чем провоцировать бессмысленную нагрузку, разрывая соединение, когда клиент действительно пришлёт слишком объёмное сообщение. Появился в HTTP/1.1
412 Precondition Failed Предварительное условие не выполнено возвращается, если ни одно из условных полей заголовка (If-Match и др., см. RFC 7232) запроса не было выполнено. Появился в HTTP/1.1
413 Payload Too Large Большое тело запроса возвращается в случае, если сервер отказывается обработать запрос по причине слишком большого размера тела запроса. Сервер может закрыть соединение, чтобы прекратить дальнейшую передачу запроса. Если проблема временная, то рекомендуется в ответ сервера включить заголовок Retry-After с указанием времени, по истечении которого можно повторить аналогичный запрос. Появился в HTTP/1.1. Ранее назывался «Request Entity Too Large»
414 URI Too Long URI слишком длинный сервер не может обработать запрос из-за слишком длинного указанного URI. Такую ошибку можно спровоцировать, например, когда клиент пытается передать длинные параметры через метод GET, а не POST. Появился в HTTP/1.1. Ранее назывался «Request-URI Too Long»
415 Unsupported Media Type Неподдерживаемый тип носителя по каким-то причинам сервер отказывается работать с указанным типом данных при данном методе. Появился в HTTP/1.1
416 Range Not Satisfiable Неудовлетворительный диапазон в поле Range заголовка запроса был указан диапазон за пределами ресурса и отсутствует поле If-Range. Если клиент передал байтовый диапазон, то сервер может вернуть реальный размер в поле Content-Range заголовка. Данный ответ не следует использовать при передаче типа multipart/byteranges[источник не указан 3477 дней]. Введено в RFC 2616 (обновление HTTP/1.1). Ранее назывался «Requested Range Not Satisfiable»
417 Expectation Failed Ожидание не удалось по каким-то причинам сервер не может удовлетворить значению поля Expect заголовка запроса. Введено в RFC 2616
418 I’m a teapot Я чайник введен в 1998 году как одна из традиционных первоапрельских шуток IETF в RFC 2324, Hyper Text Coffee Pot Control Protocol. Не ожидается, что данный код будет поддерживаться реальными серверами
419 Authentication Timeout Тайм-аут аутентификации нет в RFC 2616, используется в качестве альтернативы коду 401, которые прошли проверку подлинности, но лишены доступа к определенным ресурсам сервера. Обычно код отдается, если CSRF-токен устарел или оказался некорректным
421 Misdirected Request Неверный запрос запрос был перенаправлен на сервер, не способный дать ответ
422 Unprocessable Entity Необработанная сущность сервер успешно принял запрос, может работать с указанным видом данных (например, в теле запроса находится XML-документ, имеющий верный синтаксис), однако имеется какая-то логическая ошибка, из-за которой невозможно произвести операцию над ресурсом. Введено в WebDAV
423 Locked Заблокировано целевой ресурс из запроса заблокирован от применения к нему указанного метода. Введено в WebDAV
424 Failed Dependency Неудачная зависимость реализация текущего запроса может зависеть от успешности выполнения другой операции. Если она не выполнена и из-за этого нельзя выполнить текущий запрос, то сервер вернёт этот код. Введено в WebDAV
425 Too Early Слишком рано сервер не готов принять риски обработки "ранней информации". Введено в RFC 8470 для защиты от атак повторения при использовании 0-RTT в TLS 1.3
426 Upgrade Required Требуется обновление сервер указывает клиенту на необходимость обновить протокол. Заголовок ответа должен содержать правильно сформированные поля Upgrade и Connection. Введено в RFC 2817 для возможности перехода к TLS посредством HTTP
428 Precondition Required Требуется предварительное условие сервер указывает клиенту на необходимость использования в запросе заголовков условий, наподобие If-Match. Введено в черновике стандарта RFC 6585
429 Too Many Requests Слишком много запросов клиент попытался отправить слишком много запросов за короткое время, что может указывать, например, на попытку DDoS-атаки. Может сопровождаться заголовком Retry-After, указывающим, через какое время можно повторить запрос. Введено в черновике стандарта RFC 6585
431 Request Header Fields Too Large Слишком большие поля заголовка запроса превышена допустимая длина заголовков. Сервер не обязан отвечать этим кодом, вместо этого он может просто сбросить соединение. Введено в черновике стандарта RFC 6585
434 Requested host unavailable Запрошенный хост недоступен запрашиваемый адрес недоступен (источник не указан)
449 Retry With Повторить с возвращается сервером, если для обработки запроса от клиента поступило недостаточно информации. При этом в заголовок ответа помещается поле Ms-Echo-Request. Введено корпорацией Microsoft для WebDAV. В настоящий момент используется как минимум программой Microsoft Money
451 Unavailable For Legal Reasons Недоступно по юридическим причинам доступ к ресурсу закрыт по юридическим причинам, например, по требованию органов государственной власти или по требованию правообладателя в случае нарушения авторских прав. Был добавлен в стандарт 21 декабря 2015 года
499 Client Closed Request Клиент закрыл соединение нестандартный код, предложенный и используемый nginx для случаев, когда клиент закрыл соединение, пока nginx обрабатывал запрос

status code response ответ описание
500 Internal Server Error Внутренняя ошибка сервера любая внутренняя ошибка сервера, которая не входит в рамки остальных ошибок класса. Появился в HTTP/1.0
501 Not Implemented Не выполнено сервер не поддерживает возможностей, необходимых для обработки запроса. Типичный ответ для случаев, когда сервер не понимает указанный в запросе метод. Если же метод серверу известен, но он не применим к данному ресурсу, то нужно вернуть ответ 405. Появился в HTTP/1.0
502 Bad Gateway Плохой шлюз сервер, выступая в роли шлюза или прокси-сервера, получил недействительное ответное сообщение от вышестоящего сервера. Появился в HTTP/1.0
503 Service Unavailable Сервис недоступен сервер временно не имеет возможности обрабатывать запросы по техническим причинам (обслуживание, перегрузка и прочее). В поле Retry-After заголовка сервер может указать время, через которое клиенту рекомендуется повторить запрос. Хотя во время перегрузки очевидным кажется сразу разрывать соединение, эффективней может оказаться установка большого значения поля Retry-After для уменьшения частоты избыточных запросов. Появился в HTTP/1.0
504 Gateway Timeout Тайм-аут шлюза сервер в роли шлюза или прокси-сервера не дождался ответа от вышестоящего сервера для завершения текущего запроса. Появился в HTTP/1.1
505 HTTP Version Not Supported HTTP-версия не поддерживается сервер не поддерживает или отказывается поддерживать указанную в запросе версию протокола HTTP. Появился в HTTP/1.1
506 Variant Also Negotiates Вариант также согласовывается в результате ошибочной конфигурации выбранный вариант указывает сам на себя, из-за чего процесс связывания прерывается. Экспериментальное. Введено в RFC 2295 для дополнения протокола HTTP технологией Transparent Content Negotiation
507 Insufficient Storage Недостаточно места для хранения не хватает места для выполнения текущего запроса. Проблема может быть временной. Введено в WebDAV
508 Loop Detected Обнаружена цикличность операция отменена, т.к. сервер обнаружил бесконечный цикл при обработке запроса без ограничения глубины. Введено в WebDAV
509 Bandwidth Limit Exceeded Превышен лимит пропускной способности канала используется при превышении веб-площадкой отведенного ей ограничения на потребление трафика. В данном случае владельцу площадки следует обратиться к своему хостинг-провайдеру. В настоящий момент данный код не описан ни в одном RFC и используется только модулем «bw/limited», входящим в панель управления хостингом cPanel, где и был введён
510 Not Extended Нет расширения на сервере отсутствует расширение, которое желает использовать клиент. Сервер может дополнительно передать информацию о доступных ему расширениях. Введено в RFC 2774 для дополнения протокола HTTP поддержкой расширений
511 Network Authentication Required Требуется сетевая аутентификация этот ответ посылается не сервером, которому был предназначен запрос, а сервером-посредником — например, сервером провайдера — в случае, если клиент должен сначала авторизоваться в сети, например, ввести пароль для платной точки доступа к Интернету. Предполагается, что в теле ответа будет возвращена Web-форма авторизации или перенаправление на неё. Введено в черновике стандарта RFC 6585
520 Unknown Error Неизвестная ошибка возникает когда сервер CDN не смог обработать ошибку веб-сервера; нестандартный код CloudFlare
521 Web Server Is Down Веб-сервер не работает возникает когда подключения CDN отклоняются веб-сервером; нестандартный код CloudFlare
522 Connection Timed Out Время соединения истекло возникает когда CDN не удалось подключиться к веб-серверу; нестандартный код CloudFlare
523 Origin Is Unreachable Источник недоступен возникает когда веб-сервер недостижим; нестандартный код CloudFlare
524 A Timeout Occurred Истекло время ожидания возникает при истечении тайм-аута подключения между сервером CDN и веб-сервером; нестандартный код CloudFlare
525 SSL Handshake Failed Подтверждение связи SSL не выполнено возникает при ошибке рукопожатия SSL между сервером CDN и веб-сервером; нестандартный код CloudFlare
526 Invalid SSL Certificate Недействительный сертификат SSL возникает когда не удаётся подтвердить сертификат шифрования веб-сервера; нестандартный код CloudFlare