1.3. Коды HTTP ответов сервера

Мы рассмотрели какие могут быть запросы к серверу. Теперь посмотрим, как на них может реагировать сервер.

Все ответы разделяются на соответствующие категории:

  • 200 - 299: Success – Ответ на успешное действие, то есть сервер нашел требуемую ресурс либо успешно завершил операцию.
  • 300 - 399: Redirection – Переадресация, то есть сервер указывает клиенту, что запрашиваемый ресурс временно или постоянно был перемещен по другому адресу и рекомендует ему по нему перейти.
  • 400 - 499: Client Error – Ошибка на стороне клиента. Это может означать, что клиент запрашивает ресурс, которые не существует, либо у него нет прав для доступа к ресурсу.
  • 500 - 599: Server Error – Ошибка на стороне сервера. Это может означать, что сервер перегружен и не может обслужить запрос либо клиент отправил серверу запрос, которые вызвал сбой в работе сервера.

 

Часто встречаемые ответы сервера

200 OK – когда ресурс найден, то сервер передаст клиенту запрошенную информацию.

301 Moved permanently – когда клиент вводит определенный для запроса некоторых данных, то может получиться так, что на сервере они доступны уже по другому адресу. В данном случае сервер информирует об этом клиента и указывает ему правильный адрес. Клиент в свою очередь переходит по указанному адресу и в ответ получает 200 ОК. Так работает механизм перенаправления. Новый адрес указывается в заголовке Location:

 Принцип работы переадресации на веб-сайтах

Принцип работы переадресации на веб-сайтах

302 Found – данный ответ аналогичен ответу 301, но, если в первом случае ресурс был полностью перемещен по другому адресу на постоянной основе, то в случае с 302 ресурс лишь временно перемещен по новому адресу. Механизм перенаправления 301 и 302 используется в следующих случаях:

  • Когда ресурс на сервере не существует, то некоторые разработчики просто перенаправляют пользователя на главную и специально подготовленную страницу
  • Если на сайте запрашиваемый ресурс доступен только авторизованным пользователям, то сервер перенаправляет пользователей на страницу авторизации.
  • Если на сайте присутствуют дубли страниц, то разработчики обычно указывают серверу с каких страниц осуществлять перенаправление.

400 Bad Request – такое происходит, когда сервер не может понять запрос клиента, например задан неправильный параметр или синтаксис запроса не соответствует спецификации HTTP/

401 Unauthorized – Если на сайте присутствует авторизация пользователей и пользователь пытается перейти на защищенный ресурс, то сервер использует данный тип ответа. Весь процесс авторизации указан ниже на рисунке:

Процесс авторизации на веб-сайтах

403 Forbidden – бывает такое, что на сервере имеются ресурсы, которые доступны лишь узкому кругу пользователей, например администраторам. В таких случаях сервер посылает код 403. Разница между 401 и 403 в том, в первом случае разрешает доступ всем, кто пройдет авторизацию. Во втором случае сразу отказывает в доступе даже авторизованным пользователям (но не всем).

Возникает вопрос, а как сервер определит кому предоставить доступ, а кому отказать. Решение принимается на основе определенных заголовков, например Cookie, а также может анализироваться IP адрес отправителя, SSL сертификат и так далее.

404 Not Found – здесь все просто, если на сервере нет запрашиваемой страницы, то стандартно он отвечает кодом 401. Однако некоторые разработчики вместо этого используют коды 301/302.

500 Internal Server Error – Внутренняя ошибка сервера. Причины могут быть разные, например сервер перегружен, запрос клиента оказался вредоносный, что вызвал сбой в работе сервер и многое другое.