Ошибка 404 File not found. Коды состояния ответов сервера

07.01.2019 0 Автор Редакция
  • Жена: «Хочу шубу к зиме»
  • Муж: «HTTP/1.0 417 Expectation Failed»
  • Жена: «Хочу»
  • Муж: «HTTP/1.1 200 оk»
  • Жена: «Хочу и потом хочу шубу к зиме»
  • Муж: «HTTP/1.0 102 Processing …»
  • Осень: «HTTP/2 302 Moved Temporarily»
  • Зима: «HTTP/2 100 Continue»
  • Шуба: «HTTP/2 404 Not Found»

Здесь жена в роли пользователя отправляет запрос (который преобразует браузер) и получает ответы от сервера. В ответах мы видим стартовую строку ответа сервера, которая состоит из

HTTP/Версия – Код Состояния — Пояснение, где:

  • Версия — версия http протокола, как в запросе;
  • Код состояния (Status Code) — три цифры. По коду состояния определяется дальнейшее содержимое сообщения и поведение клиента;
  • Пояснение (Reason Phrase – сообщение/фраза причины) — текстовое короткое сообщение к коду ответа для пользователя. Не является необязательным.

Полный список кодов состояний ответов сервера приведен в конце статьи 

Всем знакомо, когда на экран отображает пустую веб-страницу с уведомлением: Ошибка 404 или 404 Not Found (не найдено) или 404 error или http error 404 — главным здесь будет число (точнее комбинация цифр). Ошибка 404  — что это такое, рассмотрим далее. Все мы плавно перетекли с конца 90-х годов в цифровой мир, в котором с удовольствием живем. Этот параллельный мир имеет собственный язык, состоящий из символов. Программисты эту языковую группу изучают, а обыкновенный человек разговаривает на этом языке посредством / при помощи веб-браузеров (переводчиков). Они переводят просьбу человека в http запрос для сервера.

При любом обращении к интернету мы видим веб-страницу (ресурс, html – документ), у которой есть свой уникальный адрес URL. Он написан сверху в адресной строке браузера. То есть, простыми словами, мы ходим в гости по квартирам (URL страниц) зачастую без приглашения. Единственное отличие веб-страниц от людей – они всегда нам рады.

Входя в квартиру физическим способом в реальном мире, мы стучим в дверь. Нам либо открывают, либо нет. Ошибка страницы 404 – указывает как раз на то, что дверь по этому адресу не откроют. Причина – за этой дверью квартиры нет, никто не живет.

В цифровом мире за нас стучится (делает http – запрос) браузер к серверу (многоквартирному дому) и получает ответ. В случае ошибки 404 виноваты не гости (сервер), а мы. Мы пришли на несуществующий адрес (URL), возможно (жильцы) веб страница переехала или умерла (но ее точно нет), в той ситуации, если верный адрес. Но возможно, мы сами ошиблись, перепутав адрес.

Первым делом, если дверь закрыта на 404, мы, конечно же, постучим еще раз – обновим страницу. Или попросим другого браузера постучать (сделать http запрос). Иногда это помогает, потому что за дверью либо крепко спали, либо открывают не всем браузерам.

Сочетание цифр в закрытой двери понимает браузер, которому кратко сообщает сервер. Для него это нормативная лексика. Он может передать нам ответ в виде более понятного сообщения error или not found или file not found, или ограничится трехзначным числом.

Если на экране мы видим любую действующую/работающую веб-страницу, то это значит, что браузер постучал и сервер ему распахнул двери с кодом ответа сервера 200 – ок, заходите.

Цифры мы зачастую видим, когда происходит ошибка. Их сочетание называется кодом ответа сервера или кодом состояния http. Первая цифра указывает на класс состояния ответа сервера по http запросу клиента (браузера):

  • 1-хх: Informational (информационные): коды, сообщающие о процессе передачи. Сообщения с такими кодами игнорируются, это начало ответа сервера. Например: 100 (Continue – продолжай. Сервер все понял), 101 (Switching Protocols — переключение протоколов, серверу надо переключиться на другой протокол, о чем он и сообщает в ответе на запрос), 102 (Processing — идёт обработка. Серверу надо время, это сообщается в ответе, для того, чтобы клиент не разорвал соединение, не дождавшись).
  • 2-xx: Success (успешно): 200 (оk) – веб страница доступна клиенту, 202 (Accepted — запрос принят на обработку, но она не завершена, может быть начат очень долгий процесс).
  • 3-xx: Redirection (перенаправление): 300 (Multiple Choices) — по указанному URI (напомним, что URL и есть один из URI) существует не один вариант предоставления ресурса по каким-либо характеристикам (например, в этой квартире живут два Адама, вам к кому, или по этому адресу живут хозяин и собака, вам к кому). Сервер передаёт с сообщением список альтернатив, давая возможность сделать выбор клиенту (браузеру) автоматически или пользователю. 301 (Moved Permanently – переехал навсегда) — запрошенная веб страница (html документ) была окончательно перенесена на новый URI (= один из URI), 302 (Found) или 302 (Moved Temporarily – переехал временно) веб страница временно доступна по другому URI
  • 4-xx: Client Error (ошибка клиента): 404 (Not Found – не найдено) – сервер все понял, но не нашел по этому адресу этой страницы (ресурса, html документа), 400 (Bad Request – плохой запрос) — сервер обнаружил в запросе клиента (браузера) синтаксическую ошибку, 418 (I’m a teapot – я чайник) — в ответ на запрос сварить кофе) введен первого апреля 98г ради шутки в расширении протокола http (HTCPCP) остался, 417 (Expectation Failed) — сервер не может удовлетворить поля Expect поля заголовка запроса.
  • 5-xx: Server Error (ошибка сервера): неудачное выполнение операции по вине сервера. 502 (Bad Gateway – плохой шлюз) — сервер, выступая в роли шлюза или прокси-сервера, получил недействительное ответное сообщение от вышестоящего сервера, 500 Internal Server Error (внутренняя ошибка сервера) — любая внутренняя ошибка сервера, 510 Not Extended (нет расширения) — на сервере отсутствует расширение, которое желает использовать клиент (браузер).

Далее приведены коды ответов сервера более подробно:

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 («многостатусный»)
  • 208 Already Reported («уже сообщалось»)
  • 226 IM Used («использовано IM»)

3xx: Redirection (перенаправление):

  • 300 Multiple Choices («множество выборов»)
  • 301 Moved Permanently («перемещено навсегда»)
  • 302 Moved Temporarily («перемещено временно»)
  • 302 Found («найдено»)
  • 303 See Other («смотреть другое»)
  • 304 Not Modified («не изменялось»)
  • 305 Use Proxy («использовать прокси»)
  • 306 — зарезервировано (код использовался только в ранних спецификациях)
  • 307 Temporary Redirect («временное перенаправление»)
  • 308 Permanent 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 Payload Too Large («полезная нагрузка слишком велика»)
  • 414 URI Too Long («URI слишком длинный»)
  • 415 Unsupported Media Type («неподдерживаемый тип данных»)
  • 416 Range Not Satisfiable («диапазон не достижим»)
  • 417 Expectation Failed («ожидание не удалось»)
  • 418 I’m a teapot («я — чайник»);
  • 419 Authentication Timeout (not in RFC 2616) («обычно ошибка проверки CSRF»)
  • 421 Misdirected Request
  • 422 Unprocessable Entity («необрабатываемый экземпляр»)
  • 423 Locked («заблокировано»)
  • 424 Failed Dependency («невыполненная зависимость»)
  • 426 Upgrade Required («необходимо обновление»)
  • 428 Precondition Required («необходимо предусловие»)
  • 429 Too Many Requests («слишком много запросов»)
  • 431 Request Header Fields Too Large («поля заголовка запроса слишком большие»)
  • 449 Retry With («повторить с»)
  • 451 Unavailable For Legal Reasons («недоступно по юридическим причинам»)
  • 499 Client Closed Request (клиент закрыл соединение)

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 («переполнение хранилища»)
  • 508 Loop Detected («обнаружено бесконечное перенаправление»)
  • 509 Bandwidth Limit Exceeded («исчерпана пропускная ширина канала»)
  • 510 Not Extended («не расширено»)
  • 511 Network Authentication Required («требуется сетевая аутентификация»)
  • 520 Unknown Error («неизвестная ошибка»)
  • 521 Web Server Is Down («веб-сервер не работает»)
  • 522 Connection Timed Out («соединение не отвечает»)
  • 523 Origin Is Unreachable («источник недоступен»)
  • 524 A Timeout Occurred («время ожидания истекло»)
  • 525 SSL Handshake Failed («квитирование SSL не удалось»)
  • 526 Invalid SSL Certificate («недействительный сертификат SSL»)