Когда вы заходите на сайт, каждый запрос сопровождается кодом состояния HTTP (Hypertext Transfer Protocol). Эти коды показывают, удалось ли серверу выполнить запрос. Они могут казаться техническими, но если вы работаете с сайтами и веб-приложениями, знать их значения очень важно.
Что такое код состояния HTTP?
Код состояния HTTP — это числовое значение в HTTP-ответе, отражающее результат обработки запроса сервером. Когда клиент (обычно браузер) отправляет серверу HTTP-запрос, сервер обрабатывает его и возвращает HTTP-ответ, включающий код состояния.
Почему важны коды состояния HTTP
Коды состояния — базовый инструмент общения серверов и клиентов (обычно браузеров) в вебе. Почему они важны?
- Обнаружение ошибок и отладка: коды показывают, что происходило при загрузке страницы или API-запросе. При ошибке код обычно указывает на проблему. Например, если пользователь получает 404 Not Found, скорее всего, URL введён с ошибкой или страницы больше нет.
- Информация о состоянии сервера: коды показывают, как сервер ответил на запрос. Это помогает разработчикам и системным администраторам следить за состоянием сервера, например при сбоях.
- Перенаправление: некоторые коды сообщают клиенту, что ресурс нужно искать в другом месте. Например, 301 Moved Permanently означает, что ресурс перемещён на новый URL, и в дальнейшем нужно обращаться по нему.
- Авторизация: некоторые коды показывают, есть ли у пользователя доступ к ресурсу. Например, 403 Forbidden означает, что у клиента нет прав на доступ.
Поэтому понимание и правильное использование кодов состояния важно для корректной работы сайта или веб-приложения. Их также можно использовать, чтобы сделать взаимодействие пользователей с сайтом быстрее и эффективнее.
Какие бывают коды состояния HTTP?
1xx — информационные
Промежуточный ответ: запрос получен, обработка продолжается.
100 Continue: запрос получен, продолжайте.
101 Switching Protocols: сервер переключает протокол по запросу.
2xx — успешные
Запрос успешно получен, понят и принят.
200 OK: запрос выполнен успешно. Содержимое ответа зависит от типа запроса.
201 Created: запрос выполнен, создан новый ресурс.
204 No Content: запрос выполнен, но содержимого для ответа нет.
3xx — перенаправления
Для завершения запроса нужно дополнительное действие.
301 Moved Permanently: страница навсегда перемещена на новый URL.
302 Found: страница временно находится по другому адресу.
304 Not Modified: кешированная версия клиента актуальна, повторно скачивать страницу не нужно.
4xx — ошибки клиента
Ошибка на стороне клиента.
400 Bad Request: сервер не понял запрос.
401 Unauthorized: требуется аутентификация.
403 Forbidden: запрос понят, но доступ запрещён.
404 Not Found: запрашиваемый ресурс не найден.
5xx — ошибки сервера
Ошибка на стороне сервера.
500 Internal Server Error: общая ошибка сервера.
502 Bad Gateway: сервер, работающий как шлюз или прокси, получил недопустимый ответ от вышестоящего сервера.
503 Service Unavailable: сервер временно не может обработать запрос.
Как проверить коды состояния HTTP
Для проверки кодов есть множество инструментов: расширения браузера, журналы сервера, средства отладки.
Инструменты браузера: в большинстве современных браузеров есть «Инструменты разработчика» (DevTools), позволяющие просматривать ответы и коды состояния. Откройте DevTools, перейдите на вкладку «Сеть» (Network) и обновите страницу или выполните запрос — вы увидите список запросов и ответов с кодами.
SEO-инструменты: Screaming Frog, любимец многих SEO-специалистов, — практически обязательный инструмент. Он даёт много информации о кодах состояния.
Search Console: в Google Search Console можно проверить прежде всего ошибки 404. Для этого перейдите в раздел:
Индексирование > Страницы.
Средства отладки HTTP: существуют и сторонние инструменты для отладки и тестирования HTTP. Например, Postman позволяет отправить запрос на URL и изучить ответ, включая код состояния.
Журналы сервера: обычно содержат HTTP-запросы и ответы, а значит, и коды состояния. По ним можно проверить, отдаёт ли сервер определённый код. Способ просмотра журналов зависит от серверного ПО.
Как исправить ошибки кодов состояния
Подход зависит от конкретного кода.
404 Not Found: возвращается, когда запрошенная страница не найдена на сервере. Обычно нужно восстановить страницу, перенаправить её на релевантную или исправить битую ссылку.
403 Forbidden: у пользователя нет доступа к ресурсу. Обычно причина в настройках прав, которые нужно исправить.
500 Internal Server Error: общая ошибка сервера. Как правило, нужно устранить проблему в работающем на сервере ПО.
503 Service Unavailable: сервер временно недоступен — обычно из-за перегрузки высоким трафиком. Решение — увеличить ресурсы сервера или применить масштабирование для пиковых периодов.
У каждого кода свои способы исправления. Поэтому сначала нужно определить, какой код возвращается, и понять его смысл. Затем, возможно, придётся изучить журналы сервера, сообщения об ошибках и другие данные, чтобы найти причину и решение.
Как коды состояния HTTP влияют на SEO?
Коды состояния HTTP могут существенно влиять на поисковую оптимизацию (SEO) сайта. Вот распространённые коды и их влияние на SEO:
200 OK: запрос успешно обработан, пользователь получил нужную информацию. Страницы, корректно отдающие 200, поддерживают и пользовательский опыт, и позиции.
301 Moved Permanently: страница навсегда перемещена на новый URL. 301-редиректы передают SEO-ценность старого URL новому. Ими нужно аккуратно управлять при изменении структуры сайта или переезде на новый домен.
404 Not Found: страница не найдена. Некоторое количество 404 нормально для любого сайта, но много битых внутренних ссылок ухудшают пользовательский опыт и расходуют краулинговый бюджет. Их поиск и исправление — часто с помощью 301-редиректов на релевантные страницы — может улучшить SEO.
500 Internal Server Error и 503 Service Unavailable: сервер столкнулся с проблемой и не смог выполнить запрос. Такие ошибки ухудшают пользовательский опыт, а при длительном сохранении Google может реже сканировать сайт и со временем исключить затронутые страницы из индекса.
Из-за этой связи владельцам и разработчикам сайтов нужно регулярно отслеживать коды состояния и быстро исправлять ошибки. Это важная часть улучшения пользовательского опыта и позиций в поиске.
100 Continue
101 Switching Protocols
103 Early Hints
200 OK
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
205 Reset Content
206 Partial Content
300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
307 Temporary Redirect
308 Permanent Redirect
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
415 Unsupported Media Type
416 Range Not Satisfiable
417 Expectation Failed
418 I'm a teapot
422 Unprocessable Entity
425 Too Early
426 Upgrade Required
428 Precondition Required
429 Too Many Requests
431 Request Header Fields Too Large
451 Unavailable For Legal Reasons
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout
505 HTTP Version Not Supported
506 Variant Also Negotiates
507 Insufficient Storage
508 Loop Detected
510 Not Extended
511 Network Authentication Required
1xx Informational
100 Continue
101 Switching Protocols
102 Processing (WebDAV)
2xx Success
200 OK
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
205 Reset Content
206 Partial Content
207 Multi-Status (WebDAV)
208 Already Reported (WebDAV)
226 IM Used
3xx Redirection
300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
306 (Unused)
307 Temporary Redirect
308 Permanent Redirect (experimental)
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
415 Unsupported Media Type
416 Requested Range Not Satisfiable
417 Expectation Failed
418 I'm a teapot (RFC 2324)
420 Enhance Your Calm (Twitter)
422 Unprocessable Entity (WebDAV)
423 Locked (WebDAV)
424 Failed Dependency (WebDAV)
425 Reserved for WebDAV
426 Upgrade Required
428 Precondition Required
429 Too Many Requests
431 Request Header Fields Too Large
444 No Response (Nginx)
449 Retry With (Microsoft)
450 Blocked by Windows Parental Controls (Microsoft)
451 Unavailable For Legal Reasons
499 Client Closed Request (Nginx)
5xx Server Error
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout
505 HTTP Version Not Supported
506 Variant Also Negotiates (Experimental)
507 Insufficient Storage (WebDAV)
508 Loop Detected (WebDAV)
509 Bandwidth Limit Exceeded (Apache)
510 Not Extended
511 Network Authentication Required
598 Network read timeout error
599 Network connect timeout error
