О чем речь? Коды ошибок HTTP указывают на конкретные причины проблем, с которыми сталкивается сервер в попытке обработать клиентские запросы.
На что обратить внимание? Рассказать подробно про каждый вид ошибки будет сложно, так как их довольно много. Однако чаще всего встречается не такое большое количество, как правило, это всем знакомые ошибки 404, 502, 504 и т.д.
В статье рассказывается:
- Суть кодов ошибок HTTP
- Коды 3xx (перенаправление)
- Коды ошибок HTTP на стороне клиента
- Серверные коды ошибок HTTP
- Способы устранения некоторых кодов ошибок HTTP
- Способы проверки кодов ошибок HTTP
- Часто задаваемые вопросы о кодах ошибок HTTP
-
Пройди тест и узнай, какая сфера тебе подходит:
айти, дизайн или маркетинг.Бесплатно от Geekbrains
Суть кодов ошибок HTTP
HTTP-статус является сообщением, которое сервер отправляет клиенту в ответ на его запрос. Например, когда пользователь переходит по ссылке или вводит запрос в веб-браузер. Коды показывают, был ли выполнен конкретный запрос клиента. Сведения в коде влияют на то, как поисковый робот или браузер будет обрабатывать содержимое страницы.
Стандартизированный код состояния состоит из трех цифр. Некоторые коды ошибок HTTP часто встречались пользователям сети, другие — нет. В целом никаких трудностей в интерпретации стандартизированных кодов состояния не возникнет даже у людей, далеких от программирования.
Обозначим ключевые термины:
- Клиент — это программное или аппаратное обеспечение, имеющее подключение к интернету и запрашивающее некоторую функцию или данные у сервера.
- Сервер — это компьютер, на котором хранятся данные. Он выполняет ряд служебных функций для других компьютеров сети, принимает клиентские запросы и отвечает на них.
Существует 5 категорий серверных ответов. Класс состояния можно определить по первой цифре.
- 5** — серверные ошибки. Причина технической ошибки со стороны сервера указывается в коротком текстовом описании после кода. Например, ошибка 500 — это внутренние сбои, реже — высокая нагрузка на сервер.
- 4** — клиентские ошибки.
- 3** — перенаправления на другой адрес (не ошибка).
- 2** — успешный запрос (не ошибка).
- 1** — информационные сообщения, передача данных (не ошибка).
входят в ТОП-30 с доходом
от 210 000 ₽/мес
Скачивайте и используйте уже сегодня:
Топ-30 самых востребованных и высокооплачиваемых профессий 2023
Поможет разобраться в актуальной ситуации на рынке труда
Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка
Только проверенные нейросети с доступом из России и свободным использованием
ТОП-100 площадок для поиска работы от GeekBrains
Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽
Полный список кодов состояния приведен в спецификации протокола.
Не будем останавливаться на HTTP-ответах 1** и 2**. Рассмотрим подробнее другие стандартизированные коды ошибок состояния HTTP.
Коды 3xx (перенаправление)
Эти стандартизированные коды нужны для того, чтобы сообщить пользователю, какое действие следует выполнить для успешного осуществления запроса. Коды 3xx предназначены для перенаправления клиента. Это не коды ошибок HTTP сервера. Однако знание того, как интерпретируются различные HTTP-статусы, поможет пользователям и веб-мастерам эффективно использовать программное обеспечение.
Код | Значение | Характеристика |
300 | Несколько возможных ответов | Код ответа 300 Multiple Choices означает, что по запрашиваемому адресу есть несколько представлений. Клиент может выбрать один из вариантов, выданных сервером. Для правильной индексации страницы пользователю следует исправить название ресурса или заголовки. |
301 | Ресурс перемещен на новый URL | Клиент получает HTTP-код 301 Moved Permanently. Ранее проиндексированный URL окончательно перемещен на новый URL, указанный в заголовке Location. Робот проиндексирует новую страницу. |
302 | Перемещен временно | Клиент получает HTTP-код 302 Found. На данный момент ресурс временно доступен на другом адресе. Страница остается в индексе. В ответе указывается новый адрес запрашиваемого URL. |
303 | Смотри другой адрес | HTTP-статус 303 See Other указывает, что запрошенная страница находится по другому адресу по запросу GET. Если нужно, чтобы страница отображалась в поиске, нужен код ответа 200. |
304 | Ресурс не модифицирован | HTTP-код 304 Not Modified используется для кэширования и означает, что страница не изменялась с момента крайнего обращения робота. Это ускоряет индексирование и экономит трафик. |
305 | Нужно использовать прокси | HTTP-код 305 Use Proxy означает, что запрошенный ресурс доступен через прокси-сервер. Данные сервера указаны в ответе. |
307 | Временное перемещение | Клиент получает HTTP-код 307 Temporary Redirect, который означает, что запрашиваемая страница временно переехала на новый адрес. Данные прописаны в Location. |
308 | Ресурс перенесен навсегда | HTTP-код 308 Permanent Redirect означает, что ресурс находится на другом URL-адресе. Данные прописаны в Location. Робот индексирует страницу перенаправления в случае, если она доступна. |
Коды ошибок HTTP на стороне клиента
- 400 Bad Request
Запрос неправильный. Ошибка возникает в случае, если браузер клиента отправляет некорректный запрос серверу. Это может быть синтаксическая ошибка. Например, в запросе отсутствовали символы завершения строки.
- 401 Unauthorized
Этот код ошибки HTTP клиента сообщает, что на ресурс можно войти, используя действительный ID пользователя и пароль. Отказ в доступе также возникает, если пользователь неправильно ввел данные для авторизации (логин и пароль).
Проблема решится, когда пользователь авторизуется.
- 402 Payment Required
Это нестандартный HTTP-статус. Он означает, что запрос не может быть выполнен, пока пользователь не произведет оплату. Код используется в платных пользовательских сервисах, а не в хостинговых провайдерах.
- 403 Forbidden
Запрет доступа к запрашиваемой странице. Он связан с тем, что у пользователя нет прав. Доступ может быть ограничен для определенных IP или в случае, если неавторизованный клиент пытается открыть файлы в системной папке. Этот код встречается, если сервер обнаружил вредоносные данные.
Скачать файл- 404 Not Found
Это один из самых распространенных кодов ошибки HTTP клиента. Сервер дает ответ, что страница не найдена по данному URL. Например, страница перенесена на другой адрес. Не стоит путать код 404 с ошибкой «Сервер не найден». В данном случае клиент в состоянии общаться с сервером, но данных по его запросу нет.
- 405 Method Not Allowed
Сервер сообщает, что используемый метод не может применяться на данном ресурсе. Он предложит доступные методы в заголовке Allow.
- 406 Not Acceptable
Этот код ошибки указывает, что запрашиваемый контент не может быть распознан из-за кодировки, метода сжатия и других причин.
- 407 Proxy Authentication Required
Доступ будет открыт, если пройти авторизацию через сервер-посредник (прокси-сервер). Это аналог кода 401.
- 408 Request Timeout
Сервер хочет отключить соединение, так как обработка запроса пользователя вышла за рамки установленного времени. У каждого ресурса есть свое время ожидания. Пользователю первым делом необходимо проверить интернет-соединение и обновить страницу.
- 409 Conflict
Запрос пользователя вызывает конфликт с текущим состоянием сервера или несовместим с другим запросом.
- 410 Gone
Это ответ сервера в случае, если запрашиваемый контент больше недоступен или удален.
- 411 Length Required
Сервер отказывается обрабатывать запрос, так как не указан Content‑Length заголовка. Необходимо указать заголовки на сервере, чтобы этот код ошибки состояния HTTP больше не возникал.
- 412 Precondition Failed
Клиент указал в запросах условие, которое нельзя выполнить. В одном или нескольких HTTP‑заголовках было указано значение false.
- 413 Request Entity Too Large
Размер запроса превышает лимит, объявленный сервером. Сервер может закрыть соединение. Веб-браузеры поддерживают запрос от 2 до 8 килобайт.
- 414 Request‑URI Too Long
У веб-сервера есть ограничение длины для интерпретации, а запрашиваемый URL длиннее установленных рамок. Чтобы избежать возникновения этого кода ошибки HTTP запросов, следует использовать метод GET, а не POST.
- 415 Unsupported Media Type
Запрос клиента не может быть обработан сервером. Такое случается, если загружаются данные неподходящего формата. В таком случае сервер просто отклоняет запрос.
- 416 Requested Range Not Satisfiable
Недопустимое значение байтов диапазона в HTTP-заголовке. Сервер не может обработать запрос. Причина может быть в опечатке клиента.
- 417 Expectation Failed
Сервер отклонил запрос пользователя, так как в поле Expect введено некорректное значение.
- 418 I’m a teapot
Это первоапрельская шутка разработчиков, появившаяся в 1998 году. Сервер не может сварить вам кофе, потому что он чайник. На деле этот код не применяется.
- 422 Unprocessable Entity
Сервер видит запрос клиента. Синтаксис верный, но обработка невозможна из-за наличия логической ошибки. Нужно обратить внимание на семантическое ядро сайта.
- 423 Locked
Страница, которую запрашивает пользователь, заблокирована от применения указанного метода. Возможен следующий вариант решения проблемы: перезагрузка роутера и компьютера и использование статистического IP.
- 424 Failed Dependency
Успешное выполнение данного запроса зависит от исхода других операций. Если одна из них завершится неуспешно, то и остальные тоже. В случае, если условия не будут соблюдены, соединение разорвется.
- 425 Unordered Collection
Этот код ошибки HTTP возникает, если клиент отправил запрос, указывающий позицию в неупорядоченной коллекции. Также причиной данного кода ответа может быть использование порядка элементов, отличающегося от серверного.
Читайте также!
- 426 Upgrade Required
Ошибка говорит о том, что необходимо обновить протокол. Указываются точные расширения протокола, которыми должен обслуживаться ресурс.
Эта ошибка возникает, когда сервер запрашивает соединение, которое не поддерживается клиентом.
- 428 Precondition Required
Этот код статуса означает, что сервер требует, чтобы запрос был условным. Это значит, что он должен соответствовать условиям правильной отправки данных на сервер. Так он сможет выдать корректные данные.
- 429 Too Many Requests
Этот код ошибок HTTP возникает, когда превышен лимит отправляемых пользователем запросов за короткий промежуток времени. Это делается, прежде всего, из соображений безопасности.
- 431 Request Header Fields Too Large
Невозможна обработка запроса пользователя, так как отправлен заголовок слишком большой длины. Возможно также отсутствие ответа кодом со стороны сервера. В таком случае соединение будет разорвано.
Решение проблемы: сокращение длины заголовков и отправка повторного запроса.
- 434 Requested Host Unavailable
Сведения о данном HTTP-коде не найдены.
- 444 No Response
Это код ошибки HTTP со стороны клиента в веб-сервере Nginx. Он сообщает, что соединение закрыто без отправки данных клиенту. Нельзя использовать данный метод в текущей процедуре обработки события.
Nginx — это мощный веб-сервер. Чаще всего его используют в качестве сервера-посредника и обратного сервера. Nginx расходует минимум ресурсов и держит большое количество одновременных соединений.
- 449 Retry With
Ошибка говорит о том, что полученных данных недостаточно для обработки запроса сервером. Рекомендуется внести корректировки в запрос и повторить его.
- 450 Blocked by Windows Parental Controls
Эту ошибку увидят дети, которые пытаются войти на заблокированный ресурс. Избежать появления данного кода ответа можно, если изменить параметры родительского контроля.
- 451 Unavailable For Legal Reasons
Клиент видит данный код ошибки HTTP в случае, если доступ к сайту закрыт по юридическим причинам. Это могут быть государственные санкции, цензура, требование правообладателя о нарушении авторских прав.
- 456 Unrecoverable Error
При обработке запроса пользователя появляются непоправимые ошибки в базе данных.
- 499 Client Closed Request
Эту ошибку веб-сервер Nginx выдает в случае, если клиент закрыл соединение во время его обработки. Сервер не может отправить назад заголовок HTTP.
Серверные коды ошибок HTTP
Эти ошибки не относятся к пользовательским. Они возникают со стороны сервера, когда он не может обработать запрос клиента или осуществить запрашиваемое действие.
- 500 Internal Server Error
Код ошибки HTTP сервера появляется, когда он встречает ситуацию, обработка которой ему не знакома. Также возможен вариант, что данный запрос не поддерживается сервером и его обработка невозможна. В таких ситуациях сервер тоже отправляет HTTP-статус 500.
- 501 Not Implemented
Ошибка 501 сообщает, что метод запроса сервером не поддерживается и его невозможно корректно обработать.
В ряде случаев в теле ошибки может быть указано: «Отправьте запрос позднее. Возможно, необходимая функция будет доступна».
- 502 Bad Getaway
Такая ошибка отправляется в случае недействительного ответа от вышестоящего сервера. Основная причина — несогласованные протоколы сервера и посредника.
- 503 Service Unavailable
Сервер временно не доступен. Он не может обработать запрос клиента по следующим причинам:
- Перегрузка сервера из-за обращения большого количества пользователей и нехватки ресурсов для обработки всех запросов.
- Техническое обслуживание сервера, которое приводит к временной блокировке его работы.
Клиенту рекомендуется отправить запрос позднее.
- 504 Gateway Timeout
Это код ошибки HTTP сервера является аналогом статуса 408. Сервер действует как шлюз и не получил ответ от вышестоящего сервера в обозначенное в настройках время.
- 505 HTTP Version Not Supported
Этот код аналогичен 426. Он сообщает, что сервер не поддерживает версию протокола HTTP, который используется клиентом. Это случается, если используется устаревший формат HTTP-протокола. Решением проблемы будет установка одной версии.
- 506 Variant Also Negotiates
Этот код говорит о проблемах в настройках сервера. Программисту сначала нужно обнаружить суть проблемы, а в дальнейшем выбрать наиболее эффективное решение.
- 507 Insufficient Storage
Код ошибки HTTP сервера 507 сообщает о том, что не хватает места для обработки пользовательских запросов. Решение: необходимо освободить пространство на сервере или расширить его. В этом случае не возникнет трудностей с обработкой запросов клиента.
- 508 Loop Detected
Данный код сервер отправляет в случае, если обнаружена цикличность запросов клиента. Это приводит к закрытию операции.
- 509 Bandwidth Limit Exceeded
Это сообщение о том, что превышен лимит потребляемого трафика. Ошибка актуальна в случае, если установлено ограничение.
- 510 Not Extended
У сервера отсутствует расширение, которое пользователь запрашивает. Список доступных расширений прописывается в теле ошибки.
- 511 Network Authentication Required
511 код ошибки HTTP сервера означает, что пользователю необходимо авторизоваться. Данные для аутентификации необходимы при PPPoE-подключении.
Способы устранения некоторых кодов ошибок HTTP
Рассмотрим, что рекомендуется делать для устранения ошибок протокола HTTP:
- Если внесены изменения после тестирования программного обеспечения, нужно обновить веб-браузер.
- Проанализируйте журнал сервера для понимания процессов обработки запросов. У веб-серверов Apache и Nginx имеются файлы access.log и error.log. В них содержатся необходимые сведения.
- Обратите внимание: описание кодов ошибок HTTP— это часть стандарта. Он осуществляется приложением, которое обслуживает запросы клиента. Получается, что код ответа сервера во многом определяется тем, как программное обеспечение обрабатывает ту или иную ошибку.
Итак, рассмотрим самые распространенные ошибки со стороны клиента или сервера.
Ошибка 400 Bad Request
Среди основных причин, которые приводят к возникновению ошибки 400:
- Большое количество файлов cookies и данных в кэше. Решением проблемы будет очистка кэша веб-браузера и файлов cookies.
- Неисправности в браузере.
- Неправильный HTTP-запрос из-за клиентской ошибки, например, при использовании curl.
Ошибка 401 Unauthorized
Код ошибки HTTP запроса 401 сообщает, что клиенту нужно войти на сайт, используя действительный ID пользователя и пароль.
Эта ошибка появляется, когда клиент пытается получить доступ к просмотру ресурса, защищенного HTTP-авторизацией. Код ошибки будет появляться до тех пор, пока клиент не введет действительный логин и пароль. Он внесен в файл .htpasswd.
Ошибка 403 Forbidden
Этот код состояния сообщает клиенту, что сервер не может выполнить запрос из-за того, что имеется запрет на доступ к требуемым файлам или страницам.
В основном код ошибки 403 появляется, если у клиента нет прав на чтение файла, который он запрашивает.
Рассмотрим, каким образом можно устранить ошибку 403 на следующем примере:
- клиент осуществляет попытку открыть индексный файл (http://example.com/index.html);
- рабочий веб-браузер принадлежит пользователю www-data;
- индексный файл расположен в /usr/share/nginx/html/index.html.
Другая распространенная причина появления кода ошибки 403 — намеренное использование файла .htaccess для того, чтобы установить запрет определенным IP-адресам на доступ к ресурсам. Поэтому в случае получения такого кода ошибки нужно проверить настройки файла .htaccess.
Сервер может отправлять ошибку 403 и в случае, если клиент пытается открыть каталог, у которого нет индексного файла и отключен листинг. Например, клиент пытается открыть каталог http://example.com/emptydir/. При этом в emptydir отсутствует индексный файл. Рекомендуется включить листинг каталога в настройках сервера.
Ошибка 404 Not Found
Код ошибки HTTP 404 сообщает, что сервер не находит данные по запросу клиента.
Причин возникновения HTTP-статуса 404 может быть много. Рассмотрим основные факторы, которые приводят к данной ошибке, а также возможные варианты решения проблемы:
- Первым делом проверьте правильность написания ссылки, которая отправляет клиента на сервер.
- Часто случается, что клиент вводит неправильный URL.
- Есть вероятность, что запрашиваемый файл отсутствует в указанном месте на сервере (перемещен или удален).
- Проверьте, верно ли указано расположение корневой директории (document root) в конфигурации сервера.
- Ошибку 404 может вызвать и то, что у пользователя, которому принадлежит рабочий процесс, нет необходимых прав для открытия каталога, где находится необходимый файл. Для этого требуются соответствующие права доступа.
- Проверьте, поддерживает ли сервер символические ссылки.
Ошибка 500 Internal Server Error
Код ошибки HTTP сервера 500 говорит о том, что есть внутренние неизвестные причины, которые не позволяют выполнить запрос пользователя. Случается, что сервер отправляет этот код в ситуациях, когда больше подходят другие коды 5xx.
Основные причины ошибки 500: неправильные права доступа на папки и файлы, вызывающие невозможность запуска скрипта. Также неправильная инструкция в файле .htaccess или неподдерживаемые директивы приводят к данному HTTP-статусу в ответ на запрос клиента.
Ошибка 502 Bad Gateway
Код ошибки 502 является результатом запроса, при котором был получен недопустимый ответ от сервера.
В случае, если это обратный прокси-сервер (выравниватель нагрузки) необходимо проверить:
- backend сервера;
- верно ли настроен обратный прокси и правильный ли backend в настройках;
- настройки сетевого соединения между серверами backend и обратным прокси-сервером. Также нужно проверить порты и отсутствует ли блокировка брандмауэром;
- есть ли разрешения у сокетов и корректно ли они расположены.
Ошибка 503 Service Unavailable
Код ошибки 503 сообщает, что сервер временно недоступен. Это может быть связано с перегрузкой или техническим обслуживанием.
Технические работы проводятся в случае нехватки ресурсов, плановой разгрузки сервера, а также при его настройке для отработки большого количества входящих запросов.
Ошибка 504 Gateway Timeout
Код состояния 504 говорит о том, что сервер не получает ответ от севера-посредника (шлюз, прокси-сервер) в рамках установленного времени. Сбои в шлюзах влияют на работу основного сервера.
Читайте также!
Основные причины появления кода ошибки HTTP сервера 504:
- проблемы с сетью, слабое интернет-соединение между шлюзом и основным сервером;
- перегрузка сервера-шлюза, который из-за большой нагрузки не может быстро выполнить работу;
- в настройках сервера указан короткий период ожидания ответа от сервера-посредника.
Способы проверки кодов ошибок HTTP
Проверить коды ошибки состояния HTTP можно, используя специализированные сервисы или через опции браузера. В браузере Google Chrome код ответа можно посмотреть в графе Status в разделе Network. Для этого нужно сделать следующее:
- откройте в веб-браузере нужную вам страницу;
- нажмите клавишу F12 для того, чтобы открыть дополнительное окно с консолью.
Другой способ посмотреть код ответа — это специализированные сервисы, такие как bertal, 2ip, cy-pr, wwhois, 4seo.
Принцип их работы рассмотрим на примере mainspy:
- Зайдите на сайт сервиса.
- Введите URL для проверки. Можно один или несколько.
- Запустите проверку.
Аналитика кодов ответа доступна не только роботам. Человек также может интерпретировать полученные от сервера данные и быстро определить, где ошибка и каким образом ее можно устранить.
Часто задаваемые вопросы о кодах ошибок HTTP
Что сообщают коды ошибок?
Коды ошибок HTTP — это трехзначный код, отправляемый сервером в ответ на запрос клиента. Его используют поисковые роботы, а поясняющие слова после кода ориентированы на пользователей сети.
Что нужно делать с кодами ошибок HTTP?
Нужно обязательно обновить веб-браузер в случае внесения изменений на сервере.
Проверьте системную информацию на сервере для того, чтобы понять, как происходит обработка запросов клиента. Веб-серверы Apache или Nginx создают файлы + access.log + и + error.log +. Их можно сканировать и получить необходимые сведения.
О чем говорит ошибка 404?
Страница, которую запрашивает пользователь, не найдена. Запрос принят, но по URL нет необходимого ресурса. Он может быть перемещен или удален.
Таким образом, HTTP-статус кратко сообщает суть ответа сервера. Это может быть успешное выполнение запроса пользователя или уведомление о наличии определенных трудностей. Знание основных кодов ошибок HTTP со стороны сервера или со стороны клиента, а также способов устранения проблем поможет пользователям оперативно решить возникающие трудности в работе с веб-серверами или приложениями.