26 января 2016      733      0

Http коды статусов сервера

Все статьи из цикла:

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

Все статусы сгруппированы по смыслу.

  • 200-е используются для успешно обработанных запросов.
  • 300-е используются для редиректа (перенаправления запроса)
  • 400-е используются при возникновении ошибок в запросе
  • 500-е появляются при наличии внутренних ошибок сервера

А теперь рассмотрим статусы подробнее.

200 ok

Статус 200 ok означает, что запрос на сервер был успешно обработан, и сервер начнёт передачу данных.

206 Partial Content (часть содержимого)

Если приложение запрашивает только часть файла, то сервером будет возвращён 206-ой статус.
Этот статус можно встретить тогда, когда вы скачивали файл, остановили закачку, а потом возобновили её спустя какое-то время. Раньше браузеры скачивали файл с нуля, сейчас же многие из них научились докачивать недостающие части, не запрашивая файл целиком.

404 not found (не найдено)

Наверняка вы часто видели страницу с сообщением об ошибке 404.
Эта ошибка означает, что запрашиваемый вами файл не был найден, серверу нечего возвращать.

401 Unauthorized (отказ в авторизации)

Защищенные паролем страницы посылают этот код статуса, если вы ввели логин и пароль неправильно.
при этом в браузере можно увидеть такое сообщение об ошибке:

401

Обращаю ваше внимание на то, что это не та авторизация, которую вы привыкли проходить на сайтах через специальные формы, и которую потом обрабатывает скрипт, хранящийся на сервере. Это вот та авторизация. Если коротко: эта авторизация устанавливается на уровне протокола и регулирует права доступа к разным частям сервера.
При такой авторизации в браузере вы увидите такое сообщение:

401_prompt

403 Forbidden (доступ запрещён)

Из названия понятно, что 403й статус означает, что доступ к странице или документу запрещён.
Запрет на просмотр чего-либо довольно распространён в интернете. Например, я могу использовать какой-нибудь фреймворк, при этом не хочу, чтобы кто-то имел доступ к внутренним файлам этого фреймворка. Я беру и запрещаю средствами сервера доступ к папке с фреймворком. В результате мои скрипты имеют к ним доступ, а пользователи из интернета — нет.

Ещё пример: допустим, у вас есть папка images. В ней лежат картинки a.jpg, b.jpg, c.jpg. Пользователь имеет ссылку /images/a.jpg. По этой ссылке он может получить нужную картинку. Но вот захотел он узнать, а какие ещё картинки лежат на сервере? Заходит он в папку /images/, а сервер ему показывает такую картину:

403

А почему так произошло? А потому, что администратор так настроил сервер. Например, можно в папку images вложить файл .htaccess со строкой

Options -Indexes

Эта строка говорит серверу, что если в папку нет файла с именем index, то закрывать всем доступ к этой папке. Если файл есть, то загружать именно его.
Не будь этой строки в настройках, пользователь по запросу /images/ получил бы список всех картинок, которые лежат на сервере.

Доступ можно запрещать не только к папке без index-файла. Например, можно запрещать доступ к любой папке по ip. В .htaccess прописываем:

1
2
3
4
5
6
order allow,deny 
# перечисляем ip забаненных
deny from 192.168.44.201 
deny from 224.39.163.12 
deny from 172.16.7.92 
allow from all 
302 (или 307) Moved Temporarily(временно перемещено) и 301 Moved Permanently (перемещено окончательно)

Эти два кода используются для редиректа (перенаправления) браузера. 301 и 302 одинаково влияют на работу браузера, но для поискового бота эти статусы означают совершенно разные вещи. Ваш браузер в любом случа перейдёт на новый адрес, указанный при перенаправлении, и на этом все интересные вещи заканчиваются.
Но в случае с поисковым ботом всё куда сложнее. Например, вы проводите на сайте технические работы и перенаправляете посетителей на сайт-зеркало с помощью 302 статуса. Бот, как посетитель сайта, перейдёт на зеркало и проиндексирует его. Когда бот захочет снова проиндексировать содержимое сайта, он вернётся на старую страницу.
Но если сайт сделал полный переезд на новый домен, лучше отправить 301 статус. В таком случае бот перейдёт на новый домен, проиндексирует его, а про старый домен и старую страницу забудет окончательно.

500 Internal Server Error (Внутренняя ошибка сервера)

500

Этот код наблюдается при сбоях в работе сервера. Большинство CGI скриптов не выводят в браузер сообщения об ошибках. Но при фатальных ошибках они всё же сообщают о них пользователю посредством передачи 500-ой ошибки.

Все темы на сайте

© 2017 BorPost · Копирование материалов сайта без разрешения запрещено