Http статусы


 При каждом обращении к серверу вы получаете от него код статуса ответа. Коды связаны с функциональностью страниц сайта и сигнализируют о состоянии страницы. Благодаря значению, которое несет код, сервер корректирует обработку документа после запроса пользователя. Самые популярные коды — 200, который показывает, что запрос выполнен успешно, и 404, показывающий ошибку, если ресурс не найден.

На код ответа сервера обращают внимание поисковые боты и браузеры.

Как проверить код ответа сервера

Посмотреть код ответа на странице можно бесплатно за пару кликов. В браузере информация находится на панели разработчика: в Google Chrome для вызовите панель горячей клавишей F12, откройте вкладку Network и обновите страницу.

Как посмотреть код сайта в браузере
Результаты просмотра кода в браузере


Для просмотра кода есть браузерные расширения: HTTP Headers для Google Chrome, HTTP Header для Opera.

Инструмент в Яндекс.Вебмастере покажет код статуса HTTP.


проверка кода ответа сервера
Результаты проверки инструментом

Инструмент проверки заголовков сервера от PR-CY определит HTTP статусы сайта и доменного имени.

как проверить код ответа сервера
Результаты проверки инструментом


Значения кодов ответов сервера

Код состоит из трех цифр и начинается с 1-5 в зависимости от группы, к которой принадлежит. После числового обозначения есть приписка на английском, которая поясняет его значение.

Принадлежность кода к группе определяется по первой цифре:


  • 1— — информационный код, отвечающий за передачу данных.
    Такие коды временны и показывают, что запрос принят и обрабатывается.
  • 2— — код успешной обработки запроса.
    Сервис получил и обработал запрос.
  • 3— — код редиректа.
    Сервер сигнализирует, что для выполнения запроса нужно предпринять дополнительные действия, к примеру, перейти на другой адрес.
  • 4— — клиентская ошибка.
    Ошибка на стороне клиента. Возможно, пользователь что-то сделал неправильно, и поэтому запрос не может быть успешно обработан.
  • 5— — серверная ошибка.
    По какой-то внутренней причине сервер не может выполнить пользовательский запрос.

Коды ответов, сигнализирующих об ошибке, содержат информацию об их причинах. Отслеживать ошибки и устранять их можно по лог-файлам сервера — в логах содержится детальная информация о проблемах.

Информационные коды

Коды этой группы информируют о том, что сервер принял запрос и будет его обрабатывать.

100 Continue

Сервер принял запрос и удовлетворен начальными сведениями. Процесс обработки будет продолжен.

101 Switching Protocols

Сервер одобрил переключение типа протокола, которое запросил пользователь. Код используется, когда сервер предлагает перейти на новую версию HTTP. В поле Update будут перечислены доступные протоколы, пользователь может выбрать один из них.

102 Processing

Сервер сигнализирует, что принял запрос, но на обработку требуется больше времени. Клиенту не нужно разрывать соединение, он должен сбросить таймер и дождаться следующей команды.

Коды успешной обработки запроса


Коды группы сигнализируют о том, что запрос принят и успешно обработан.

200 ОК

Это один из самых популярных ответов, он означает, что запрос принят и успешно обработан, страница открыта и доступна к просмотру. Все страницы, которые будут проиндексированы, должны отдавать код 200 ОК.

201 Created

Ответ означает, что сервер принял запрос, обработал и создал новый ресурс. Код можно увидеть, к примеру, если пользователь создал новую страницу. Если новый ресурс создать невозможно, или он перестанет существовать к тому времени, когда клиент получит сообщение, то сервер отдаст код 202 Accepted.

202 Accepted

Сервер принял запрос, но не завершил его обработку. Запрос можно отклонить, поскольку на его выполнение может потребоваться слишком много времени.

203 Non-Authoritative Information

Код ответа 203 означает, что операция прошла успешно, но от кода 200 он отличается указанием источника информации. Данные получены не из первоисточника, а с другого сервера или резервной копии. Возможно, информация устарела, о чем и предупреждает код ответа.


204 No Content

Обработка запроса прошла успешно, но серверу нечего отправить в ответ. Ответ не содержит тело сообщения, только заголовки. Обычно такой код включается в первую пустую строку кода, чтобы разрешить запуск скриптов, не меняя содержимого и не обновляя страницу.

205 Reset Content

Сервер сигнализирует, что запрос успешно обработан и клиенту нужно сбросить введенные данные. Обновление документа не требуется, сервер не передает тело сообщения.

206 Partial Reset

Этот код обычно используют инструменты кэширования. Сервер в ответе возвращает только часть контента страницы, которую и запрашивает пользователь.

207 Multi-Status

Код обозначает мультистатусность ответа: сервер обработал несколько операций,не зависящих друг от друга. Результаты отображаются в теле сообщения как XML-документ с объектом multistatus.

226 IM Used

Сервер успешно завершил операцию: принял заголовок A-IM и вернул содержимое с учетом указанных параметров.

Коды редиректов

Класс кодов показывает, что для успешного выполнения запроса клиенту нужно совершить переход, то есть редирект.

300 Multiple Choices

Робот не может проиндексировать страницу, поскольку не может сопоставить ресурс и URL. Частая причина — ресурс перемещен на другой адрес. Сервер предлагает клиенту выбор альтернатив для перехода. Для успешной индексации нужно либо правильно указать ресурс, либо поправить заголовки.


301 Moved Permanently

Если у проиндексированной страницы изменился адрес, то со старого URL на новый настраивают 301 редирект. Код ответа показывает, что запрашиваемый документ был навсегда перенесен на другой URL, куда пользователя перенаправляет ссылка. Робот проиндексирует страницу, на которую ведет редирект, и склеит исходный адрес и новый.

302 Found

Код означает не постоянное, а временное перемещение страницы на другой адрес, поэтому страницу удалять из индекса не нужно. В ответе указано новое расположение данных.

Страница остается в индексе, ссылочный вес продолжает передаваться.

303 See Other

Сервер сигнализирует, что ресурс, который указан в запросе, расположен на другом адресе. Обычно он используется для перенаправления пользователя к выбранному ресурсу выводом данных POST-активированного скрипта.

В ответе сервера будет указан адрес, по которому нужно искать результат, удовлетворяющий запрос.

304 Not Modified

Код рекомендуется выдавать, если страница не менялась с момента ее последнего посещения роботом. Сервер дает сигнал об этом боту, бот получает от документа http-заголовки, не загружая страницу повторно, из-за чего индексирование проходит быстрее и уменьшается нагрузка на сервер.


305 Use Proxy

Код ответа связан с безопасностью данных. Сервер выдает код 305, если доступ к ресурсу, который запрашивает клиент, возможен только с прокси. Прокси указан там же в ответе сервера.

307 Temporary Redirect

Код 307 похож на 302, но дает более конкретный ответ. Код означает, что ресурс, который требует клиент, на время переведен на другой адрес, а новый URL нужно прописать в Location.

Коды ошибок клиента

Коды ответов этой группы означают ошибки по вине клиента или невозможность выдать результат, потому что на странице нет данных.

400 Bad Request

Запрос некорректен, где-то в нем есть синтаксическая ошибка, поэтому сервер не может выдать результат. Для успешного выполнения запроса нужно исправить синтаксис, обычно помогает очистка куки или кэша страниц, исправление запроса пользователем.

401 Unauthorized

Информация доступна только зарегистрированным пользователям или запаролена. Если пользователь не авторизовался, доступ к странице невозможен.

403 Forbidden

Запрос успешно получен и верно сформулирован, но у сервера нет доступа к запрашиваемой странице. Возможно, доступ ограничен специально для определенных IP-адресов с помощью файла .htaccess.

Если пользователю www-data, под которым запущен сервер, закрыт доступ к чтению файла, поможет команда sudo chmod o=r /usr/share/nginx/html/index.html


Еще одна причина — пользователь обратился к закрытому каталогу, в котором нет индексного файла. Разрешение на просмотр каталога включается в настройках сервера.

404 Not Found

Серверу не удалось найти ресурс, который запрашивает пользователь, документа по этому адресу не существует.

Это частая ошибка, она может быть связана с тем, что пользователь ошибся в адресе страницы, у пользователя нет прав на чтение и исполнение файла, файл на сервере переместили иди удалили, корневой каталог указали с ошибкой или сервер не настроен для работы с символьными «мягкими» ссылками, которые использованы для обработки.

проверить код ответа сервера
Код ответа 404 Not Found

Ссылки на удаленные разделы сайта будут возвращать код 404. На такие документы не нужно тратить краулинговый бюджет, поэтому в файле robots.txt запрещают роботу посещение и индексацию таких страниц.

405 Method Not Allowed

Недоступен метод, которым совершается запрос. Сервер выдает этот код для конкретных отдельных объектов на странице. К примеру, строка запроса, запускающая скрипт, отличается от запроса, который совершает пользователь.


406 Not Acceptable

Код ответа означает, что запрашиваемый файл существует, запрос сформулирован верно, но кодировка документа недоступна для расшифровки роботом.

407 Proxy Authentication Required

Этот код похож на 401 и 407, он используется, если вопрос корректен, но клиент может получить доступ к документу только с помощью авторизации через прокси. Клиент авторизуется, если прокси вернет поле с заголовком proxy-authenticate.

408 Request Timeout

Сервер возвращает этот код ответа, если в установленное время ожидания клиент не сделал ни один запрос. Код 408 не возвращается, если пользователь сам отменил запрос, или соединение оборвалось, а отправить ответ нет возможности.

409 Conflict

Код означает, что в системе конфликт: к примеру, пользователь загружает файл на сервер, где уже есть такой файл в новой версии.

410 Gone

Код ответа похож на 404 код, он означает, что документ, к которому направлен запрос, больше недоступен. Если сервер возвращает код 404, то робот еще вернется на страницу, чтобы проверить ее состояние, а в случае ответа 410 робот поймет, что страница удалена навсегда.

411 Length Required

Сервер не может принять и обработать запрос, если в заголовке content-length не указана длина контента.

413 Request Entity Too Large

Если в теле запроса слишком большой объем информации и сервер не может обработать такой большой запрос, то он возвращает код ошибки 413. Если это временная проблема, в поле Retry-After сервер укажет время, которое нужно подождать.


414 Request-URL Too Long

Аналогично с кодом 413, за исключением того, что 414 код отображается, если в запросе указан слишком длинный URL.

422 Unprocessable Entity

Сервер возвращает этот код, если он принял и распознал запрос, но в теле запроса допущена логическая ошибка, которая мешает его выполнить.

424 Failed Dependency

Если выполнение этой операции зависит от исхода других связанных с ней операций, сервер вернет этот запрос.

429 Too Many Requests

Код 429 означает, что пользователь посылает слишком много запросов за короткий временной промежуток, и сервер не может обработать такое количество.

431 Request Header Fields Too Large

Если в запросе указаны слишком большие поля заголовков, сервер не сможет справиться с таким запросом и вернет код ошибки 431.

451 Unavailable For Legal Reasons

Код отображает то же, что и 403, но с уточнениями. Он используется, если доступ к серверу заблокирован по решению суда, обычно из-за нарушения авторских прав, а также если доступ закрыт на государственном уровне.

418 I’m a teapot

Это забавный код, возвращающий ошибку «Я чайник», связан с гипертекстовым протоколом управления кофеваркой — Hyper Text Coffee Pot Control Protocol. Ошибка означает, что запрос некорректен, с помощью чайника нельзя приготовить кофе. Протокол и код этой ошибки были созданы в шутку в 1998 году к 1 апреля.


Http статусы

Код 418 I’m a teapot

Коды ошибок сервера

Коды этой группы обозначают ошибки на стороне сервера.

500 Internal Server Error

Код обозначает, что сервер не может обработать запрос по причине внутренних ошибок. Обычно проблема в настройке сервера, обращении к некорректному файлу .htaccess или пакету PHP, который не установлен.

501 Not Implemented

Сервер возвращает этот код, когда не может обработать запрос: он не поддерживает возможности для обработки или не может распознать метод. К примеру, эта ошибка появится, если распространенные протоколы HEAD, POST, GET и другие по какой-то причине не поддерживаются сервером.

502 Bad Gateway

За обработку запроса отвечают бэкенд серверы, которые передают данные прокси-серверу или шлюзу. Если запрос был направлен к такому шлюзу, который не получил ответ от бэкенда, сервер вернет 502 код. Для исправления нужно проверить настройку прокси-сервера.

503 Service Unavailable

Код свидетельствует о перегрузке сервера, запрос не может быть выполнен в данный момент. Второй причиной может быть обслуживание сервера: ему не хватает памяти или ресурсов, чтобы обработать запрос. Такой ответ может вернуться, если на сервере ограничено количество пользователей.

504 Gateway Timeout

Код похож на 502, но ошибка 504 означает, что истек срок ожидания ответа от сервера. Необходимое количество времени истекло, а ответ от бэкенд-сервера не пришел.

Причина может быть в сетевом соединении, недостатке ресурсов, версии протокола HTTP или настройке сервера, если выставлен слишком короткий таймаут.

506 Variant Also Negotiates

Код ответа 506 означает, что сервер настроен некорректно: ошибка в конфигурации зацикливает обращение сервера, и он указывает сам на себя.

507 Insufficient Storage

Если сервер загружен настолько, что для выполнения запроса не хватает памяти, он вернет ошибку 507. Это бывает, если на сервере нет места для данных в принимаемом запросе.

510 Not Extended

Код 510 возвращается в случае, если сервер не поддерживает расширение, которое указано в запросе. В этом же ответе сервер может указать, какие расширения доступны.

511 Network Authentication Required

Эта ошибка возвращается клиенту, если пользователь не авторизовался в сети. К примеру, если он не согласился на условия использования интернета, когда подключался к wi-fi, или не ввел пароль.


На коды ответов сервера обращают внимание поисковые роботы, с помощью этих сигналов они узнают, как им нужно вести себя со страницей — индексировать, пропустить, вернуться к ней позже. Веб-мастерам важно распознавать сигналы с ошибками, чтобы направлять поисковых ботов и исправлять часть ошибок, если причина ошибки им доступна.

Источник: pr-cy.ru

Данный класс кодов состояния показывает, что дальнейшие действия должны быть выполнены клиентом для тоо, чтобы запрос завершился успешно. Требуемое действие может быть выполнено клиентом без участия пользователя тогда и только тогда, когда слудующий запрос будет GET или HEAD. Клиент обязан обнаруживать бесконечные циклы переадресаций, потому что подобные переадресации генерируют бессмысленный траффик.

Замечание: предыдущая версия спецификации допускала максимум 5 редиректов. Разработчики должны иметь это ввиду.

Wikipedia

Коды этого класса сообщают клиенту, что для успешного выполнения операции необходимо сделать другой запрос, как правило, по другому URI. Из данного класса пять кодов 301, 302, 303, 305 и 307 относятся непосредственно к перенаправлениям. Адрес, по которому клиенту следует произвести запрос, сервер указывает в заголовке Location. При этом допускается использование фрагментов в целевом URI.

По последним стандартам клиент может производить перенаправление без запроса пользователя только если второй ресурс будет запрашиваться методом GET или HEAD. В предыдущих спецификациях говорилось, что для избежания круговых переходов пользователя следует спрашивать после 5-го подряд перенаправления. При всех перенаправлениях, если метод запроса был не HEAD, то в тело ответа следует включить короткое гипертекстовое сообщение с целевым адресом, чтобы в случае ошибки пользователь смог сам произвести переход.

Разработчики HTTP отмечают, что многие клиенты при перенаправлениях с кодами 301 и 302 ошибочно применяют метод GET ко второму ресурсу, несмотря на то, что к первому запрос был с иным методом (чаще всего PUT). Чтобы избежать недоразумений, в версии HTTP/1.1 были введены коды 303 и 307 и их рекомендовано использовать вместо 302. Изменять метод нужно только если сервер ответил 303. В остальных случаях следующий запрос производить с исходным методом.

Источник: www.restapitutorial.ru

Код состояния HTTP (англ. HTTP status code) — часть первой строки ответа сервера. Представляет собой целое число из трех цифр. Первая цифра — класс состояния. За кодом ответа следует поясняющая фраза на английском языке, разъясняющая причину такого ответа.
Программа-клиент по коду ответа о результатах его запроса узнаёт и определяет, какие действия ему предпринимать дальше. Программа-клиент может не знать все коды состояния, но он обязан отреагировать в соответствии с классом кода.

Например:

404 Not Found (Не найдено)
403 Access allowed only for registered users
201 Webpage Created
507 Insufficient Storage

В настоящее время выделено пять классов кодов состояния.

Список описанных в статье кодов ответа:


1xx: Informational (Информационные).
100 Continue (Продолжать).
101 Switching Protocols (Переключение протоколов).
102 Processing (Идёт обработка).


2xx: Success (Успешно).
200 OK (Хорошо).
201 Created (Создано).
202 Accepted (Принято).
203 Non-Authoritative Information (Информация не авторитетна).
204 No Content (Нет содержимого).
205 Reset Content (Сбросить содержимое).
206 Partial Content (Частичное содержимое).
207 Multi-Status (Многостатусный).
226 IM Used (IM использовано).


3xx: Redirection (Перенаправление).
300 Multiple Choices (Множество выборов).
301 Moved Permanently (Перемещено окончательно).
302 Found (Найдено).
303 See Other (Смотреть другое).
304 Not Modified (Не изменялось).
305 Use Proxy (Использовать прокси).
306 (зарезервировано).
307 Temporary Redirect (Временное перенаправление).


4xx: Client Error (Ошибка Программа-клиента).
400 Bad Request (Плохой запрос).
401 Unauthorized (Неавторизован).
402 Payment Required (Необходима оплата).
403 Forbidden (Запрещено).
404 Not Found (Не найдено).
405 Method Not Allowed (Метод не поддерживается).
406 Not Acceptable (Не приемлемо).
407 Proxy Authentication Required (Необходима аутентификация прокси).
408 Request Timeout (Время ожидания истекло).
409 Conflict (Конфликт).
410 Gone (Удалён).
411 Length Required (Необходима длина).
412 Precondition Failed (Условие «ложно»).
413 Request Entity Too Large (Размер запроса слишком велик).
414 Request-URI Too Long (Запрашиваемый URI слишком длинный).
415 Unsupported Media Type (Неподдерживаемый тип данных).
416 Requested Range Not Satisfiable (Запрашиваемый диапазон не достижим).
417 Expectation Failed (Ожидаемое не приемлемо).
422 Unprocessable Entity (Необрабатываемый экзмепляр).
423 Locked (Заблокировано).
424 Failed Dependency (Невыполненная зависимость).
425 Unordered Collection (Неупорядоченный набор).
426 Upgrade Required (Необходимо обновление).
449 Retry With (Повторить с…).


5xx: Server Error (Ошибка сервера).
500 Internal Server Error (Внутренняя ошибка сервера).
501 Not Implemented (Не реализовано).
502 Bad Gateway (Плохой шлюз).
503 Service Unavailable (Сервис недоступен).
504 Gateway Timeout (Шлюз не отвечает).
505 HTTP Version Not Supported (Версия HTTP не поддерживается).
506 Variant Also Negotiates (Вариант тоже согласован).
507 Insufficient Storage (Переполнение хранилища).
509 Bandwidth Limit Exceeded (Исчерпана пропускная ширина канала).
510 Not Extended (Не расширено).


1xx: Informational (Информационные)
В этот класс выделены коды, информирующие о процессе передачи. В HTTP/1.0 сообщения с такими кодами должны игнорироваться. В HTTP/1.1 Программа-клиент должен быть готов принять этот класс сообщений как обычный ответ, но ничего серверу отправлять не нужно. Сами сообщения от сервера содержат только стартовую строку ответа и, если требуется, несколько специфичных для ответа полей заголовка. Прокси-сервера подобные сообщения должны отправлять дальше от сервера к Программе-клиенту.
100 Continue (Продолжать)
Сервер удовлетворён начальными сведениями о запросе. Программа-клиент может продолжать пересылать заголовки.

101 Switching Protocols (Переключение протоколов)
Сервер предлагает перейти на более подходящий для указанного ресурса протокол. Список предлагаемых протоколов сервер обязательно указывает в поле заголовка Update. Если Программу-клиента это заинтересует, то он посылает новый запрос с указанием другого протокола.

102 Processing (Идёт обработка)
Запрос принят, но на его обработку понадобится длительное время. Используется сервером, чтобы Программа-клиент не разорвал соединение из-за превышения времени ожидания. Программа-клиент при получении такого ответа должен сбросить таймер и дожидаться следующей команды в обычном режиме.


2xx: Success (Успешно)
Сообщения данного класса информируют о случаях успешного принятия и обработки запроса Программы-клиента. В зависимости от статуса сервер может ещё передать заголовки и тело сообщения.

200 OK (Хорошо)
Успешный запрос ресурса. Если Программой-клиентом были запрошены какие-либо данные, то они находятся в заголовке и/или теле сообщения.

201 Created (Создано) (Транзакция прошла успешно)
В результате успешного выполнения запроса был создан новый ресурс. Сервер должен указать его местоположение в заголовке Location. Серверу рекомендуется ещё указывать в заголовке характеристики созданного ресурса (например, в поле Content-Type). Если сервер не уверен, что ресурс действительно будет существовать к моменту получения данного сообщения Программой-клиентом, то лучше использовать ответ 202.

202 Accepted (Принято)
Запрос был принят на обработку, но обработка не завершена. Программе-клиенту не обязательно дожидаться окончательной передачи сообщения, так как может быть начат очень долгий процесс.

203 Non-Authoritative Information (Неавторитетная информация)
Аналогично ответу 200, но в этом случае передаваемая информация была взята не из первичного источника (резервной копии, другого сервера и т. д.) и поэтому может быть неактуальной.

204 No Content (Нет содержимого)
Сервер успешно обработал запрос, но в ответе были переданы только заголовки без тела сообщения. Программа-клиент не должен обновлять содержимое документа, но может применить к нему полученные метаданные.

205 Reset Content (Сбросить содержимое)
Сервер обязывает Программу-клиента сбросить введённые пользователем данные. Тела сообщения сервер при этом не передаёт и документ обновлять не обязательно.

206 Partial Content (Частичное содержимое)
Сервер удачно выполнил частичный GET запрос, возвратив только часть. В заголовке Content-Range сервер указывает байтовые диапазоны содержимого. Особое внимание при работе с подобными ответами следует уделить кэшированию.

207 Multi-Status (Многостатусный)
Сервер передаёт результаты выполнения сразу нескольких независимых операций. Они помещаются в само тело сообщения в виде XML-документа с объектом multistatus. Не рекомендуется размещать в этом объекте статусы из серии 1xx из-за бессмысленности и избыточности.

226 IM Used (IM использовано)
Заголовок A-IM от Программы-клиента был успешно принят и сервер возвращает содержимое с учётом указанных параметров.


3xx: Redirection (Перенаправление)
Коды класса 3xx сообщают Программе-клиенту что для успешного выполнения операции необходимо сделать другой запрос (как правило по другому URI). Из данного класса пять кодов 301, 302, 303, 305 и 307 относятся непосредственно к перенаправлениям (жарг. редирект). Адрес, по которому Программе-клиенту следует произвести запрос, сервер указывает в заголовке Location. При этом допускается использование фрагментов в целевом URI.

По последним стандартам Программа-клиент может производить перенаправление автоматически (без запроса пользователя) только если второй ресурс будет запрашиваться GET-методом или HEAD. В предыдущих спецификациях говорилось, что для избежание круговых переходов пользователя следует спрашивать после 5-ого подряд перенаправления[2]. При всех перенаправлениях если метод был не HEAD, то в тело ответа следует включить короткое гипертекстовое сообщение с целевым адресом чтобы в случае чего пользователь смог сам произвести переход.

Разработчики HTTP отмечают что многие Программы-клиенты при перенаправлениях с кодами 301 и 302 ошибочно применяют метод GET ко второму ресурсу, несмотря на то, что к первому запрос был с иным методом[3]. Чтобы избежать недоразумений в версии HTTP/1.1 были введены коды 303 и 307 вместо 302. Изменять метод нужно, только если сервер ответил 303. В остальных случаях следующий запрос производить с исходным методом.

По указанному URI существует несколько вариантов предоставления ресурса по типу MIME, по языку или по другим характеристикам. Сервер передаёт с сообщением список альтернатив, давая возможность сделать выбор Программе-клиенту (автоматически) или пользователю.

301 Moved Permanently (Перемещено окончательно)
Запрошенный документ был окончательно перенесен на новый URI, указанный в поле Location заголовка. Некоторые Программа-клиенты некорректно ведут себя при обработке данного кода (см. описание ко всему классу 3xx).

302 Found (Найдено)
Запрошенный документ временно доступен по-другому URI, указанному в заголовке в поле Location. Этот код может быть использован, например, при управляемом сервером согласовании содержимого. Некоторые Программы-клиенты некорректно ведут себя при обработке данного кода (см. описание ко всему классу 3xx).

303 See Other (Смотреть другое)
Документ по запрошенному URI нужно запросить по адресу в поле Location заголовка с использованием метода GET несмотря даже на то, что первый запрашивался иным методом. Этот код был введён вместе с 307-ым для избегания неоднозначности, чтобы сервер был уверен, что следующий ресурс будет запрошен GET-методом (см. описание ко всему классу 3xx).
Например, на веб-странице есть поле ввода текста для быстрого перехода и поиска. После ввода данных браузер делает запрос методом POST, включая в тело сообщения введённый текст. Если обнаружен документ с введённым названием, то сервер отвечает 303, указав в заголовке Location его постоянный адрес. Тогда браузер гарантировано его запросит GET-методом для получения содержимого. В противном случае сервер просто вернёт Программа-клиенту страницу с результатами поиска[прим 2].

304 Not Modified (Не изменялось)
Сервер возвращает такой код, если Программа-клиент запросил документ GET-методом , использовал заголовок If-Modified-Since или If-None-Match и документ не изменился с указанного момента. При этом сообщение сервера не должно содержать тела.

305 Use Proxy (Использовать прокси)
Запрос к запрашиваемому ресурсу должен осуществляться через прокси-сервер, URI которого указан в поле Location заголовка. Данный код ответа могут использовать только исходные HTTP-сервера (не прокси).

306 (зарезервировано)
Использовалось раньше, в настоящий момент зарезервировано.

307 Temporary Redirect (Временное перенаправление)
Запрашиваемый ресурс короткое время доступен по другому URI (указывается в поле Location заголовка). Этот код был введён вместе с 303 вместо 302-ого для избежания неоднозначности (см. описание ко всему классу 3xx).


4xx: Client Error (Ошибка Программа-клиента)
Класс кодов 4xx предназначен для указания ошибок со стороны Программы-клиента. При использовании всех методов, кроме HEAD, сервер должен вернуть в теле сообщения гипертекстовое пояснение для пользователя.

400 Bad Request (Плохой запрос)
Означает, что сервер обнаружил в запросе Программы-клиента синтаксическую ошибку.

401 Unauthorized (Не авторизован)
Запрос требует идентификации пользователя. Сервер должен запросить имя и пароль у пользователя, а тот передаст их в заголовке WWW-Authenticate в следующем запросе. Если были указаны неверные данные, то сервер снова вернёт этот же статус.

402 Payment Required (Необходима оплата)
Обратите внимание что этот код предусмотрен для платных пользовательских сервисов, а не для хостинговых компаний. Если не оплачена услуга хостинга сайта, то логичней возвращать Программа-клиенту ответ из класса 5xx. Например, как cPanel возвращает ответ 509 (Bandwidth Limit Exceeded) когда площадкой превышен лимит на потребление трафика.

403 Forbidden (Запрещено)
Сервер выдал ошибку 403 при попытке просмотра директории «cgi-bin», доступ к которой был запрещён.
Сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе со стороны Программа-клиента к указанному ресурсу.
Если для доступа к ресурсу требуется аутентификация средствами HTTP, то сервер вернёт ответ 401 (или 407 для прокси). В противном случае ограничения были заданы администратором сервера или разработчиком веб-приложения и могут быть любыми в зависимости от возможностей используемого ПО.
В любом случае Программе-клиенту следует сообщить причины отказа в обработке запроса.
Наиболее вероятными причинами ограничения могут послужить:

* Попытка доступа к системным ресурсам веб-сервера (например, файлам .htaccess или .htpasswd) или к файлам, доступ к которым был закрыт с помощью конфигурационных файлов.
* Для доступа требуется аутентификация не средствами HTTP (например, для доступа к CMS или разделу для зарегистрированных пользователей).
* Сервер не удовлетворён IP-адресом Программы-клиента (например, временная блокировка из-за частых обращений или же на этапе разработки приложения доступ разрешён только некоторым IP).

404 Not Found (Не найдено)
Сервер понял запрос, но не нашёл соответствующего документа или страницы по указанному URI. Если серверу известно, что по этому адресу был документ, то ему желательно использовать код 410. Ответ 404 может использоваться вместо 403, если требуется тщательно скрыть от посторонних глаз определённые ресурсы.

405 Method Not Allowed (Метод не применим)
Указанный Программой-клиентом метод нельзя применить к текущему ресурсу. В ответе сервер должен указать доступные методы в заголовке Allow разделив их запятой.
Обратите внимание что эту ошибку сервер должен возвращать если метод ему известен, но он не применим именно к указанному в запросе ресурсу. Если же указанный метод не применим на всём сервере, то Программе-клиенту нужно вернуть ответ 501 (Not Implemented).

406 Not Acceptable (Не приемлемо)
Запрошенный URI не может удовлетворить переданным в заголовке характеристикам. Если метод был не HEAD, то сервер должен вернуть список допустимых характеристик для данного ресурса.

407 Proxy Authentication Required (Необходима авторизация прокси)
Ответ аналогичен коду 401 за исключением того, что аутентификация производится для прокси-сервера. Механизм аналогичен идентификации на исходном сервере.

408 Request Timeout (Время ожидания истекло)
Время ожидания сервером передачи от Программы-клиента истекло. Программа-клиент может повторить аналогичный предыдущему запрос в любое время.
Например, такая ситуация может возникнуть при загрузке на сервер объёмного файла методом POST или PUT. В какой-то момент передачи источник данных перестал отвечать (например, из-за повреждёния компакт-диска или потеря связи с другим компьютером в локальной сети). Пока Программа-клиент ничего не передаёт, ожидая от него ответа, соединение с сервером держится. Через некоторое время сервер может закрыть соединение со своей стороны чтобы дать возможность другим Программа-клиентам сделать запрос.
Ответ не возвращается когда Программа-клиент принудительно остановиа передачу по команде пользователя или соединение прервалось по каким-то иным причинам, так как ответ уже послать не возможно.

409 Conflict (Конфликт)
Запрос не может быть выполнен из-за конфликтного обращения к ресурсу. Такое возможно, например, когда две Программы-клиента пытаются изменить ресурс с помощью метода PUT.

410 Gone (Удалён)
Такой ответ сервер посылает, когда ресурс раньше был по указанному URI, но был удалён и теперь недоступен. Серверу в этом случае не известно и местоположение альтернативного документа (например, копии). Если у сервера есть подозрение, что документ в ближайшее время может быть восстановлен, то лучше Программе-клиенту передать код 404.

411 Length Required (Необходима длина)
Для указанного ресурса Программа-клиент должен указать Content-Length в заголовке запроса. Без указания этого поля не стоит делать повторную попытку запроса к серверу по данному URI.
Такой ответ вполне естественнен для запросов типа POST и PUT. Например, если по указанному URI производится загрузка файлов, а на сервере стоит ограничение на их объём. Тогда разумней будет проверить в самом начале заголовок Content-Length и сразу отказать в загрузке, чем провоцировать бессмысленную нагрузку разрывая соединение, когда Программа-клиент действительно пришлёт слишком объёмное сообщение.

412 Precondition Failed (Условие «ложно»)
Возвращается, если ни одно из условных полей заголовка запроса не было выполнено.

413 Request Entity Too Large (Размер запроса слишком велик)
Возвращается в случае, когда сервер отказывается обработать запрос по причине слишком большого размера тела запроса. Сервер может закрыть соединение, чтобы прекратить дальнейшую передачу запроса Программой-клиентом.
Если проблема временная, то рекомендуется в ответ сервера включить заголовок Retry-After с указанием времени, по истечении которого можно повторить аналогичный запрос.

414 Request-URL Too Long (Запрашиваемый URL слишком длинный)
Сервер не может обработать запрос из-за слишком длинного указанного URL. Такую ошибку можно спровоцировать, например, когда Программа-клиент пытается передать длинные параметры через метод GET, а не POST.

415 Unsupported Media Type (Неподдерживаемый тип данных)
По каким-то причинам сервер отказывается работать с указанным типом данных при данном методе.

416 Requested Range Not Satisfiable (Запрашиваемый диапазон не достижим)
В поле Range заголовка запроса был указан диапазон за пределами ресурса и отсутствует поле If-Range. Если Программа-клиент передал байтовый диапазон, то сервер может вернуть реальный размер в поле Content-Range заголовка. Данный ответ не следует использовать при передаче типа multipart/byteranges.

417 Expectation Failed (Ожидаемое не приемлемо)
По каким-то причинам сервер не может удовлетворить значению поля Expect заголовка запроса.

422 Unprocessable Entity (Необрабатываемый экземпляр)
Сервер успешно принял запрос, может работать с указанным видом данных, в теле запроса XML-документ имеет верный синтаксис, но имеется какая-то логическая ошибка из-за которой невозможно произвести операцию над ресурсом.

423 Locked (Заблокировано)
Целевой ресурс из запроса заблокирован от применения к нему указанного метода.

424 Failed Dependency (Невыполненная зависимость)
Реализация текущего запроса может зависеть от успешности выполнения другой операции. Если она не выполнена и из-за этого нельзя выполнить текущий запрос, то сервер вернёт код 424.

425 Unordered Collection (Неупорядоченный набор)
Данный ответ посылается если Программа-клиент послал запрос обозначив положение в неотсортированной коллекции или используя порядок следования элементов отличный от серверного.

426 Upgrade Required (Необходимо обновление)
Сервер указывает Программе-клиенту на необходимость обновить протокол. Заголовок ответа должен содержать правильно сформированные поля Upgrade и Connection.

449 Retry With (Повторить с…)
Возвращается сервером если для обработки запроса от Программы-клиента поступило не достаточно информации. При этом в заголовок ответа помещается поле Ms-Echo-Request.
В настоящий момент как минимум используется программой Microsoft Money. Более подробную информацию по данному коду ответа можно получить в библиотеке MSDN.


5xx: Server Error (Ошибка сервера)
Коды 5xx выделены под случаи неудачного выполнения операции по вине сервера. Для всех ситуаций, кроме использования метода HEAD, сервер должен включать в тело сообщения объяснение, которое Программа-клиент отобразит пользователю.

500 Internal Server Error (Внутренняя ошибка сервера)
Любая внутренняя ошибка сервера, которая не входит в рамки остальных ошибок класса 5xx.

501 Not Implemented (Не реализовано)
Сервер не поддерживает возможностей, необходимых для обработки запроса.
Типичный ответ для случаев, когда сервер не понимает указанный в запросе метод. Если же метод серверу известен, но он не применим только к данному ресурсу, то нужно вернуть ответ 405 (Method Not Allowed).

502 Bad Gateway (Плохой шлюз)
Сервер в роли шлюза или прокси получил сообщение о неудачном выполнении промежуточной операции.

503 Service Unavailable (Сервис недоступен)
Сервер временно не имеет возможности обрабатывать запросы по техническим причинам (обслуживание, перегрузка и прочее). В поле Retry-After заголовка сервер может указать время, через которое Программе-клиенту рекомендуется повторить запрос. Хотя во время перегрузки очевидным является сразу разрывать соединение, эффективней может оказаться установка большого значения поля Retry-After для уменьшения частоты избыточных запросов.

504 Gateway Timeout (Шлюз не отвечает)
Сервер в роли шлюза или прокси не дождался ответа от вышестоящего сервера для завершения текущего запроса.

505 HTTP Version Not Supported (Версия HTTP не поддерживается)
Сервер не поддерживает или отказывается поддерживать указанную в запросе версию протокола HTTP.

506 Variant Also Negotiates (Вариант тоже согласован)
В результате ошибочной конфигурации выбранный вариант указывает сам на себя из-за чего процесс связывания прерывается.

507 Insufficient Storage (Переполнение хранилища)
Не хватает места для выполнения текущего запроса. Проблема может быть временной.

509 Bandwidth Limit Exceeded (Исчерпана пропускная ширина канала)
Используется при превышении веб-площадкой отведённого ей ограничения на потребление трафика. В данном случае владельцу площадки следует обратиться к своему хостинг-провайдеру. В настоящий момент данный код не описан ни в одном RFC и используется только модулем bw/limited, входящем в панель управления хостингом cPanel.

510 Not Extended (Не расширено)
На сервере отсутствует расширение, которое планирует использовать Программа-клиент. Сервер может дополнительно передать информацию о доступных ему расширениях.

Источник: prokoshkin.ru


You May Also Like

About the Author: admind

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.