Коды ответа (состояния) HTTP показывают, был ли успешно выполнен конкретный HTTP-запрос. Коды делятся на пять классов:
- Информационные ответы (100 – 199)
- Успешные ответы (200 – 299)
- Перенаправления (300 – 399)
- Клиентские ошибки (400 – 499)
- Серверные ошибки (500 – 599)
Перечисленные ниже коды состояния определены RFC 9110.
Примечание: Если вы получили код ответа (состояния), которого нет в данном списке, в таком случае он является не стандартизированным кодом ответа.
Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туториалов, задач по автоматизации и книг по QA.
Информационные ответы
100 Continue
Этот промежуточный ответ указывает, что запрос успешно принят, и клиент может продолжать присылать запросы либо проигнорировать этот ответ, если запрос был завершён.101 Switching Protocols
Этот код посылается в ответ на запрос клиента с заголовком Upgrade. Он указывает, что сервер переключился на другой протокол, который был указан в заголовке.102 Processing
Этот код указывает на то, что сервер получил запрос и обрабатывает его, но ответа пока нет.103 Early Hints
Этот код состояния предназначен в основном для использования с заголовком Link, позволяя клиенту начать предварительную загрузку ресурсов, пока сервер готовит основной ответ.
Успешные ответы
200 OK
Запрос успешно обработан. Значение результата “успешно” зависит от метода HTTP:- GET: Ресурс был найден и передан в теле ответа.
- HEAD: Заголовки были переданы в ответе.
- PUT или POST: Ресурс, описывающий результат действия сервера на запрос, передан в теле ответа.
- TRACE: В теле ответа содержится тело запроса, полученного сервером.
201 Created
Запрос успешно выполнен, и в результате был создан новый ресурс. Обычно такой ответ посылается после POST-запросов или некоторых PUT-запросов.202 Accepted
Запрос был получен, но еще не обработан. Он не является обязательным, поскольку в HTTP нет возможности отправить асинхронный ответ о результатах выполнения запроса. Он предназначен для случаев, когда запрос обрабатывает другой процесс или сервер.203 Non-Authoritative Information
Этот код ответа означает, что возвращаемые метаданные не полностью совпадают с теми, что имеются на исходном сервере, а собраны с локальной или сторонней копии. За исключением этого конкретного случая, ответ 200 OK предпочтительнее этого статуса.204 No Content
Для этого запроса нет содержимого, но присылаются заголовки, которые могут быть полезны. Клиент может обновить свои кэшированные заголовки для данного ресурса новыми, предоставленными в этом запросе.205 Reset Content
Сообщает клиенту о необходимости сбросить содержимое текущей страницы и перейти на другую страницу или выполнить другую операцию.206 Partial Content
Этот код ответа используется, когда клиент отправляет заголовок Range, чтобы запросить только часть ресурса.207 Multi-Status
Используется, чтобы предоставить информацию о нескольких ресурсах в тех случаях, когда для каждого из них может быть применено разное состояние (статус). Таким образом, он собирает информацию о нескольких ресурсах и их индивидуальных состояниях и предоставляет их в одном ответе.208 Already Reported
Сервер сообщает клиенту, что некоторая информация уже была передана ранее и больше не нуждается в повторной передаче. Это полезно, чтобы избежать излишней передачи одних и тех же данных, особенно когда речь идет о множестве связанных ресурсов на сервере. Клиент может использовать этот ответ, чтобы оптимизировать свои запросы и избежать ненужных повторных передач данных.226 IM Used
Сервер успешно обработал GET-запрос, который был отправлен, чтобы получить информацию о ресурсе. Ответ, который клиент получает от сервера, представляет собой информацию о текущем состоянии ресурса после выполнения одной или нескольких операций над ним.
Сообщения о перенаправлениях
300 Multiple Choices
Запрос имеет более одного возможного ответа. Клиент должен выбрать один из них. (Стандартного способа выбора одного из ответов не существует).301 Moved Permanently
URL запрашиваемого ресурса был изменен навсегда. Новый URL будет предоставлен в ответе.302 Found
Этот код ответа означает, что URI запрашиваемого ресурса был временно изменен. В будущем возможны дальнейшие изменения URI. Поэтому в последующих запросах клиент должен продолжать использовать измененный URI, который был предоставлен в ответе на данный запрос.303 See Other
Сервер отправил этот ответ, чтобы перенаправить клиента на получение запрашиваемого ресурса по другому URI c запросом GET.304 Not Modified
Этот ответ используется для целей кэширования. Он сообщает клиенту, что запрашиваемый ресурс не был изменен, поэтому клиент может продолжать использовать кэшированную версию ответа.307 Temporary Redirect
Сервер посылает этот ответ, чтобы перенаправить клиента на получение запрашиваемого ресурса по другому URI с тем же методом, который был использован в предыдущем запросе. Он имеет ту же семантику, что и HTTP-ответ 302 Found, за исключением того, клиент не должен менять используемый HTTP-метод: если в первом запросе был использован метод POST, то во втором запросе также должен быть использован POST.308 Permanent Redirect
Это означает, что ресурс теперь постоянно находится на другом URI, указанном в заголовке Location: HTTP Response header. Этот код имеет ту же семантику, что и код ответа 301 Moved Permanently HTTP, за исключением того, что клиент не должен изменять используемый метод HTTP: если в первом запросе использовался POST, то и во втором запросе должен использоваться POST.
Ответы на клиентские ошибки
400 Bad Request
Сервер не может или не хочет обрабатывать запрос из-за ошибок клиента (например, неправильный синтаксис запроса).401 Unauthorized
Хотя в стандарте HTTP указано слово “не авторизован”, семантически этот ответ означает “не аутентифицирован”. Это означает, что клиент должен пройти аутентификацию, чтобы получить запрошенный ответ.402 Payment Required
Этот код ответа зарезервирован для будущего использования. Первоначальной целью создания этого кода было его использование в цифровых платежных системах. Однако, на данный момент он не используется.403 Forbidden
Клиент не имеет прав доступа к содержимому, т.е. он не авторизован, поэтому сервер отказывается предоставить запрашиваемый ресурс.404 Not Found
Сервер не может найти запрашиваемый ресурс. В браузере это означает, что URL не распознан. В API это также может означать, что эндпоинт действителен, но сам ресурс не существует. Этот код ответа, вероятно, наиболее известен, поскольку часто встречается в Интернете.405 Method Not Allowed
Сервер знает о запрашиваемом методе, но он не может быть использован. Например, API может не разрешать вызов DELETE для удаления ресурса.406 Not Acceptable
Этот ответ отправляется, когда веб-сервер, выполнив server-driven content negotiation, не находит контента, соответствующего критериям, заданным клиентом.407 Proxy Authentication Required
Этот ответ аналогичен 401 Unauthorized, но требует аутентификации прокси.408 Request Timeout
Этот ответ посылается некоторыми серверами при неработающем соединении, даже без какого-либо предшествующего запроса со стороны клиента. Он означает, что сервер хочет завершить неиспользуемое соединение. Этот ответ используется гораздо чаще, поскольку некоторые браузеры, например Chrome, Firefox 27+ или IE9, используют механизмы предварительного соединения HTTP для ускорения серфинга. Также следует отметить, что некоторые серверы просто закрывают соединение без отправки этого сообщения.409 Conflict
Этот ответ отправляется, когда запрос противоречит текущему состоянию сервера.410 Gone
Этот ответ отправляется, когда запрашиваемый контент было окончательно удален с сервера без адреса пересылки. Клиенты должны удалить свои кэши и ссылки на ресурс.411 Length Required
Сервер отклонил запрос, поскольку требуется указание заголовка Content-Length.412 Precondition Failed
Клиент указал в своих заголовках условия, которые сервер не может выполнить.413 Payload Too Large
Размер запроса превышает лимит, установленный сервером. Сервер может закрыть соединение, вернув поле заголовка Retry-After.414 URI Too Long
URI, запрошенный клиентом, слишком длинный для того, чтобы сервер мог его обработать.415 Unsupported Media Type
Формат запрашиваемых данных не поддерживается сервером, поэтому сервер отклоняет запрос.416 Range Not Satisfiable
Диапазон, указанный в поле заголовка Range в запросе, не может быть обработан. Возможно, он выходит за пределы переданного URI.417 Expectation Failed
Этот код ответа означает, что ожидание, указанное в поле заголовка запроса Expect, не может быть выполнено сервером.418 I'm a teapot
Сервер отклоняет попытку заварить кофе с помощью чайника (является шутливым и нестандартным кодом ответа. Он не выполняет реальных действий на сервере и используется исключительно в юмористических или тестовых целях.).421 Misdirected Request
Сервер, на который был отправлен запрос, не может предоставить ответ на этот запрос, потому что он не настроен для обработки данного типа запросов или не понимает их.422 Unprocessable Content
Запрос был правильно сформулирован, но не смог быть выполнен из-за семантических ошибок.423 Locked
Ресурс, к которому осуществляется доступ, заблокирован.424 Failed Dependency
Текущий запрос завершился неудачей из-за проблемы или ошибки, которая произошла в предыдущем запросе.425 Too Early
Сервер отказывается выполнять запрос, потому что есть риск, что этот запрос может быть повторно отправлен, что может привести к нежелательным или небезопасным последствиям.426 Upgrade Required
Сервер отказывается выполнять запрос по текущему протоколу, но готов сделать это после того, как клиент перейдет на другой протокол. Сервер посылает заголовок Upgrade в ответе 426, чтобы указать требуемый протокол.428 Precondition Required
Этот ответ предназначен для предотвращения проблемы “потери обновления” (lost update), когда клиент получает состояние ресурса c помощью GET, изменяет его и отправляет обратно на сервер с помощью PUT, а в это время третья сторона также изменяет состояние на сервере, что приводит к конфликту.429 Too Many Requests
Пользователь отправил слишком много запросов за определенный промежуток времени.431 Request Header Fields Too Large
Сервер не хочет обрабатывать запрос, поскольку поля его заголовка слишком длинные. Запрос может быть отправлен повторно после уменьшения размера полей заголовка запроса.451 Unavailable For Legal Reasons
Клиент запросил ресурс, который не может быть предоставлен по закону, например, веб-страницу, подвергнутую государственной цензуре.
Ответы на ошибки сервера
500 Internal Server Error
Сервер столкнулся с ситуацией, которую он не знает, как решить.501 Not Implemented
Метод запроса не поддерживается сервером и не может быть обработан. Единственными методами, которые сервер обязан поддерживать (и которые, следовательно, не должны возвращать этот код), являются GET и HEAD.502 Bad Gateway
Этот ответ означает, что сервер, работая в качестве шлюза для получения ответа, необходимого для обработки запроса, получил недействительный (некорректный) ответ.503 Service Unavailable
Сервер не готов к обработке запроса. Обычно это связано с тем, что сервер находится на техническом обслуживании или перегружен. Обратите внимание, что вместе с этим ответом должна быть отправлена страница с объяснением проблемы. Этот ответ следует использовать временно, а HTTP-заголовок Retry-After должен, по возможности, содержать предполагаемое время восстановления работоспособности сервиса.504 Gateway Timeout
Этот ответ об ошибке выдается, когда сервер выступает в роли шлюза и не может получить ответ вовремя.505 HTTP Version Not Supported
Версия HTTP, используемая в запросе, не поддерживается сервером.506 Variant Also Negotiates
Это означает, что на сервере произошла ошибка из-за неправильной конфигурации.507 Insufficient Storage
Это означает, что сервер не может выполнить определенный метод (например, PUT или POST) на запрашиваемом ресурсе, потому что у него нет возможности сохранить информацию, которая необходима для успешного завершения этого запроса. Сервер не может обработать запрос, так как у него не хватает места или ресурсов для сохранения необходимых данных или представления.508 Loop Detected
Сервер обнаружил бесконечный цикл при обработке запроса.510 Not Extended
Это означает, что для выполнения запроса серверу необходимы дополнительные функциональные расширения или возможности, которые в данный момент отсутствуют.511 Network Authentication Required
Указывает на необходимость аутентификации клиента для получения доступа к сети.
Перевод статьи «HTTP response status codes».
Пингбэк: Как запускать параллельное выполнение тестов в Appium?
Пингбэк: Тестирование API в Cypress