Коды ответа сервера: примеры, настройка, проверка
Представьте, что отправляете сообщение другу и ожидаете от него ответа. Собеседник может прислать “Всё ок”, “Не понял”, “Я занят, поговорим позже” и так далее. Это его реакции на ваш месседж. Аналогом подобной реакции является код ответа HTTP. Сегодня мы разберемся, как и почему серверы сайта отвечают сообщениями.
Что такое коды ответов HTTP
Каждый раз, когда вы вбиваете адрес в браузере или нажимаете на ссылку, компьютер отправляет запрос на сервер в интернете и просит что-то (например, веб-страницу). Сервер обрабатывает этот запрос и отвечает. Частью этого ответа является короткий код из трёх цифр. Каждое такое число имеет стандартизированное значение, которое определено в спецификации протокола HTTP.
Код ответа HTTP помогает понять, что произошло с вашим запросом: был ли он успешен, требует ли дополнительных действий, есть ли сторонние проблемы. Всё как в реальной жизни: вместо того чтобы витиевато говорить длинные и завуалированные фразы, иногда легче дать короткий и понятный ответ.
На что влияет код ответа страницы
Код ответа HTTP играет важную роль во взаимодействии между клиентом (обычно веб-браузером или приложением) и сервером. Вот какие аспекты взаимодействия могут быть затронуты этими кодами:
- Управление потоком данных и сессия. В зависимости от кода браузер или приложение могут принять решение о следующем действии. Если сессия пользователя истекла, сервер может вернуть определенный код и перенаправить пользователя на страницу входа.
- Оптимизация производительности и адаптивность контента. Некоторые коды ответа позволяют использовать кэшированные версии сайтов, что ускоряет загрузку страниц и снижает нагрузку на сервер.
- Дебаггинг, разработка, интеграция с другими сервисами. Для программистов коды ответа — важный инструмент отладки. А когда приложения взаимодействуют друг с другом через API, коды ответа помогают определить успешность запроса или возникшие проблемы.
- Информирование пользователей и обеспечение безопасности. Код быстро сообщает о статусе запроса. В частности, он может сообщать о проблемах с аутентификацией или авторизацией.
- SEO-оптимизация. Поисковые системы используют коды ответа для индексации сайтов. Например, частые ответы “404” могут негативно повлиять на рейтинг, а корректно настроенные перенаправления помогут сохранить или передать ссылочный сок.
Классификация кодов ответа HTTP
- 1хх – Информационные. Редко встречаются и обычно говорят, что всё в порядке, продолжайте. Это когда вы звоните другу и слышите гудки. Значит, звонок начался, но ещё не произошло ничего конкретного.
- 2хх – Успешные. Если видите код из этой категории, значит, всё хорошо. Вы дозвонились и вам ответили: “Привет”. Эти коды говорят, что сервер сделал то, что вы просили.
- 3хх – Перенаправления. Вы пришли в кафе, а вам сказали: “Мы переехали на другой конец улицы”. Сервер говорит, что информация или страница переместилась и вам следует перейти за ней куда-то.
- 4хх – Ошибки на стороне клиента. Вы звоните по номеру, которого не существует. Эти коды говорят, что запрос не может быть выполнен из-за какой-то ошибки на вашей стороне. Может быть, вы перепутали адрес страницы или не имеете прав доступа.
- 5хх – Ошибки на стороне сервера. Вы пытаетесь дозвониться до друга, у которого сломан телефон. Это проблемы, которые возникли не по вашей вине, но из-за них сервер не может выполнить запрос.
Распространенные коды ошибок сервера
400 Bad Request
Этот код указывает, что сервер не понял запрос из-за некорректного синтаксиса. Клиенту следует изменить криво составленный запрос или убрать недопустимые данные перед повторной отправкой. Это как пытаться позвонить воображаемому другу.
401 Unauthorized
Ответ сервера, указывающий, что для доступа к ресурсу требуется аутентификация. Вам здесь не рады, потому что вы не представились: нужно авторизоваться или ввести пароль. Если аутентификация была предоставлена, это может означать, что учетные данные были отклонены.
403 Forbidden
Вам здесь не рады, даже если вы представились. В отличие от ошибки 401, тут аутентификация не поможет и запрос не следует повторять. У вас нет прав доступа к ресурсу. Это как прийти на частную вечеринку без приглашения (например, на наш корпоратив).
404 Not Found
Сервер не может найти запрашиваемый ресурс. Этот код часто используется, когда сервер не хочет указывать, почему ресурс был отклонен. Или если ресурс отсутствует, но сервер не хочет или не может это подтвердить. Вы пришли в магазин за определенным товаром, но его уже раскупили. Или его никогда не было?
405 Method Not Allowed
Запрашиваемый метод не поддерживается для указанного ресурса. Вы пытаетесь что-то сделать не тем способом, которым следует. Например, метод DELETE может быть не разрешен для конечной точки, которая поддерживает только GET. Иными словами, вы пытаетесь завести машину, вставив ключ в прикуриватель.
408 Request Timeout
Сервер не может дождаться завершения запроса от клиента и закрывает соединение. Вы звонили в службу доставки, оператор ожидал, пока вы решите, что заказать, но вы так и не решились.
429 Too Many Requests
Клиент отправил слишком много запросов за короткий промежуток времени. Обычно это связано с ограничениями по частоте запросов. Представьте, что вы пытаетесь взять 10 порций мороженого в кафе, когда перед вами уже стоит огромная очередь.
500 Internal Server Error
На сервере произошла ошибка, и он не может выполнить запрос. Это общая ошибка, указывающая на проблемы на стороне сервера (что-то сломалось). Это как если бы вы готовили сложное блюдо по рецепту, но что-то пошло не так, и оно превратилось в кашу.
502 Bad Gateway
Один сервер в сети (обычно прокси-сервер) получил недопустимый ответ от другого сервера при попытке выполнить запрос. Если бы это была почта, ваше письмо другу потерялось бы в одном из отделений.
503 Service Unavailable
Сервер в настоящее время не может обработать запрос из-за перегрузки или технического обслуживания. Данное состояние – временное: клиент может повторить запрос позже. Это как прийти в кафе и увидеть, что оно закрыто на небольшой перерыв.
504 Gateway Timeout
Один сервер в сети (обычно прокси-сервер) не дождался ответа от другого сервера или другой вспомогательной системы, чтобы завершить текущий запрос. Вы пытаетесь позвонить другу через старую телефонную будку, а соединение не устанавливается.
Проверка кода сервера
С помощью браузера
- Откройте интересующую вас страницу. Нажмите правой кнопкой мыши в любом месте страницы и выберите “Исследовать элемент” или просто “Исследовать” (зависит от браузера).
- Перейдите на вкладку “Сеть” (или “Network” на английском) и обновите страницу: можно нажать F5 или кнопку “обновить” в браузере.
- В списке появившихся элементов найдите первый, который, скорее всего, будет иметь то же имя, что и ваш URL. Например, если вы проверяете страницу https://example.com, ищите элемент с именем “example.com”.
- Когда найдете, кликните по нему, и в правой части окна отобразятся детали. Среди прочего вы увидите код состояния, который, как правило, будет выглядеть как трехзначное число (например, 200 или 404).
С помощью онлайн-сервисов
- Существует множество сайтов, которые позволяют проверить код состояния страницы. Один из них — httpstatus.io. Перейдите на сайт, введите URL страницы, которую хотите проверить, и нажмите кнопку “Check”. Сайт покажет код состояния для введенной вами страницы.
С помощью командной строки
- Если у вас установлен cURL, откройте командную строку. Введите команду: curl -I [URL страницы]. Например: curl -I https://example.com. Нажмите Enter. В ответе вы увидите код состояния в первой строке вывода.
Настройка кода состояния сервера
Настройка кодов зависит от того, какой именно сервер вы используете и какие цели преследуете. Давайте рассмотрим, как настроить коды ответа для двух наиболее популярных серверов
Apache
Редиректы
Если вы хотите, чтобы при доступе к одной странице пользователь автоматически перенаправлялся на другу, откройте файл .htaccess в корневой директории вашего сайта. Добавьте строку:
Redirect 301 /старый-путь /новый-путь
Это будет 301 редирект (постоянное перенаправление).
Настройка ошибок
Если вы хотите показать пользователю кастомную страницу при определенной ошибке (например, 404), в файле .htaccess добавьте строку:
ErrorDocument 404 /путь-к-странице-ошибки.html
Nginx
Редиректы
Если вы хотите настроить перенаправление, откройте конфигурационный файл Nginx для сайта. Обычно он находится в /etc/nginx/sites-available/ или /etc/nginx/conf.d/. Добавьте:
location ~* ^/старый-путь$ {
return 301 /новый-путь;
}
Настройка ошибок
Если хотите показать кастомную страницу ошибки, в конфигурационном файле добавьте:
error_page 404 /путь-к-странице-ошибки.html;
После внесения изменений в конфигурацию Apache или Nginx, не забудьте перезапустить сервер, чтобы изменения вступили в силу.
Это базовые настройки: в зависимости от потребностей, вы можете настроить множество других параметров. Если есть специфические запросы или сложные сценарии, возможно, потребуется дополнительная конфигурация или использование дополнительных модулей/плагинов для вашего сервера.
Остались вопросы?
Задайте их нам