Коды HTTP запросов (http headers)
Создавая web сайты вы всегда будете сталкиваться с кодами HTTP(S) ответа от веб сервера. Веб сервер возвращает заголовок (header) c кодом ответа, который показывает успешность выполнения запроса.
Расшифровка всех http заголовков web сервера
1xx – информационные
100 Continue HTTP/1.1
«Продолжай» – сервер принял запрос, клиент может продолжать присылать заголовки.
101 Switching Protocols HTTP/1.1
«Переключение протоколов» – сервер предлагает перейти на другой протокол, список протоколов сервер указывает в заголовке Upgrade
.
2xx – успешные запросы
200 OK HTTP/1.0
«Успешный запрос» – если клиентом были запрошены какие-либо данные, то они находятся в заголовках и/или теле ответа.
201 Created HTTP/1.0
«Создано» – в результате успешного запроса был создан новый ресурс. Сервер может указать адреса созданных ресурсов в теле ответа, при этом предпочтительный адрес указывается в заголовке Location
.
202 Accepted HTTP/1.0
«Принято» – запрос был принят, но еще не обработан.
203 Non-Authoritative Information HTTP/1.1
«Информация не авторитетна» – успешный запрос, но передаваемая информация может быть неактуальной.
204 No Content HTTP/1.0
«Нет содержимого» – сервер успешно обработал запрос, но в ответе были переданы только заголовки.
205 Reset Content HTTP/1.1
«Сбросить содержимое» – сервер обязывает сбросить введенные пользователем данные.
206 Partial Content HTTP/1.1
«Частичное содержимое» – сервер удачно выполнил частичный GET-запрос, возвратив только часть сообщения. В заголовке Content-Range
сервер указывает байтовые диапазоны содержимого.
3xx – перенаправления
300 Multiple Choices HTTP/1.0
«Множество выборов» – по запросу существует несколько вариантов ресурса (по MIME, языку и т.д.). Сервер передает список альтернатив, давая клиенту возможность сделать выбор.
301 Moved Permanently HTTP/1.0
«Ресурс перемещен навсегда» – документ был окончательно перенесен на новый URI, указанный в заголовке Location
.
301-й редирект в PHP
302 Found HTTP/1.0
«Перемещено временно» – запрошенный документ временно доступен по другому URI, указанному в заголовке Location
.
303 See Other HTTP/1.1
«Смотреть другое» – сервер сообщает что документ нужно запросить по адресу переданному в заголовке Location
с использованием GET-метода.
Используется для перенаправления после отправки формы методом POST (метод Post/Redirect/Get).
304 Not Modified HTTP/1.0
«Не изменялось» – сервер возвращает такой код, если клиент запросил документ методом GET, использовал заголовок If-Modified-Since
или If-None-Match
и документ не изменился с указанного момента. При этом сообщение сервера не должно содержать тела. Подробнее о заголовках Last-Modified.
305 Use Proxy HTTP/1.1
«Использовать прокси» – запрос к запрашиваемому ресурсу должен осуществляться через прокси-сервер, URI которого указан в Location
.
307 Temporary Redirect HTTP/1.1
«Временное перенаправление» – запрашиваемый ресурс на короткое время доступен по другому URI, указанный в заголовке Location
. Метод запроса (GET/POST) менять не разрешается.
308 Permanent Redirect HTTP/1.1
«Постоянное перенаправление» – ресурс был окончательно перенесен на новый URI, указанный в Location
. Метод запроса (GET/POST) менять не разрешается.
4xx – ошибки клиента
400 Bad Request HTTP/1.0
«Неверный запрос» – запрос не может быть понят сервером из-за некорректного синтаксиса.
401 Unauthorized HTTP/1.1
«Неавторизованный запрос» – для доступа необходимо ввести логин и пароль.
402 Payment Required HTTP/1.1
«Необходима оплата за запрос» – в настоящий момент не используется. Этот код предусмотрен для платных пользовательских сервисов.
403 Forbidden HTTP/1.0
«Доступ к ресурсу запрещен» – сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу.
404 Not Found HTTP/1.0
«Ресурс не найден» – документ не существует.
Отправка 404-го кода в PHP
405 Method Not Allowed HTTP/1.1
«Недопустимый метод» – указанный клиентом метод нельзя применить к текущему ресурсу. В ответе сервер должен указать доступные методы в заголовке Allow
, разделив их запятой.
406 Not Acceptable HTTP/1.1
«Неприемлемый запрос» – нужный документ существует, но не в том формате (язык или кодировка).
407 Proxy Authentication Required HTTP/1.1
«Требуется идентификация прокси» – ответ аналогичен коду 401 за исключением того, что аутентификация производится для прокси-сервера.
408 Request Timeout HTTP/1.1
«Время запроса истекло» – клиент не передал полный запрос в течение установленного времени и сервер разорвал соединение.
409 Conflict HTTP/1.1
«Конфликт» – запрос конфликтует с другим запросом или с конфигурацией сервера. Например, такое возможно когда два клиента пытаются изменить ресурс с помощью метода PUT.
410 Gone HTTP/1.1
«Недоступен» – такой ответ сервер посылает, если ресурс раньше был по указанному URL, но был окончательно удален с сайта. Если документ в ближайшее время может быть восстановлен, то лучше передать 404-й код.
411 Length Required HTTP/1.1
«Необходимо указать длину» – сервер отказывается принимать запрос без заголовка Content-Length
. Такой ответ естественен для запросов типа POST и PUT.
412 Precondition Failed HTTP/1.1
«Условие ложно» – при проверке на сервере одного или более заголовков обнаружено несоответствие.
413 Payload Too Large HTTP/1.1
«Тело запроса превышает допустимый размер» – сервер отказывается обрабатывать запрос из-за слишком большого размера тела.
414 URI Too Long HTTP/1.1
«Недопустимая длина URI запроса» – сервер не может обработать запрос из-за слишком длинного URI.
415 Unsupported Media Type HTTP/1.1
«Неподдерживаемый MIME» – сервер отказывается работать с указанным типом данных.
416 Range Not Satisfiable HTTP/1.1
«Диапазон не может быть обработан» – в заголовке Range
был указан недопустимый диапазон байтов.
417 Expectation Failed HTTP/1.1
«Сбой при ожидании» – сервер отказывается обрабатывать запрос, потому что значение заголовка Expect
не соответствует ожиданиям.
426 Upgrade Required
«Требуется обновление» – сервер отказывается выполнять запрос с использованием текущего протокола. Введено в для возможности перехода к TLS.
5xx – ошибки сервера
500 Internal Server Error HTTP/1.0
Внутренняя ошибка сервера. Обычно возникает из-за ошибок в файле .htaccess или критической ошибки PHP при отключенном показе ошибок.
Включить показ ошибок PHP
501 Not Implemented HTTP/1.0
«Не реализовано» – сервер не имеет возможностей для обработки запроса.
502 Bad Gateway HTTP/1.0
«Плохой, ошибочный шлюз» – сервер, выступая в роли шлюза или прокси-сервера, получил недействительное ответное сообщение от вышестоящего сервера.
503 Service Unavailable HTTP/1.0
«Сервис недоступен» – сервер временно не может обрабатывать запросы по техническим причинам. В заголовке Retry-After
указывается время, через которое клиенту рекомендуется повторить запрос.
504 Gateway Timeout HTTP/1.1
«Шлюз не отвечает» – сервер в роли прокси-сервера не дождался ответа от вышестоящего сервера.
505 HTTP Version Not Supported HTTP/1.1
«Версия HTTP не поддерживается» – сервер не поддерживает предлагаемую версию протокола HTTP.