Что означают коды ответа сервера о состоянии страниц сайта

Ошибки с SSL сертификатами

Если вы делаете запросы к https:// сайтам, то рано или поздно увидите ошибки вроде : «SSL error SSL3_GET_SERVER_CERTIFICATE:certificate verify failed». Ничего страшного, сейчас мы укажем PHP, что не время проводить проверки SSL сертификатов.


Воспользуемся контекстом потока, для задания необходимых параметров. Перед кодом нужно добавить:

$contextOptions = array(   ‘ssl’ => array(   ‘verify_peer’ => false,   ‘verify_peer_name’ => false   ) ); // установлен контекст с флагами, запрещающими проверку SSL сертификата stream_context_set_default($contextOptions);

// ну и дальше уже знакомый код …

1 2 3 4 5 6 7 8 9 10 11

$contextOptions=array(

 ‘ssl’=>array(

 ‘verify_peer’=>false,

 ‘verify_peer_name’=>false

 )

);

// установлен контекст с флагами, запрещающими проверку SSL сертификата

stream_context_set_default($contextOptions);

  // ну и дальше уже знакомый код

Ошибки со стороны сервера: 5ХХ

Коды состояния HTTP 5й серии призваны указывать на проблемы со стороны обработки сервером. Они используются в то время, когда запрос, отправленный пользователем, правильно сформирован и не содержит лишних и неверных данных.

Однако сервер не в состоянии на него ответить. Как правило, это сопровождается сообщением, выводимым в обозревателе клиента, благодаря которому посетитель может сориентироваться, почему ресурс ничего не ответил.

Ошибка внутри сервера (Internal Server Error): 500

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

Вероятнее всего произошло обращение по несуществующей ссылке или запрос на объект, которого никогда не было.

Функция не реализована (Not Implemented): 501

Ошибка вызвана непринятием сервера вашего запроса. Она возникает потому что некоторые из протоколов не реализованы или специально запрещены, обработка не может быть завершена нормально.

Неверный шлюз (Bad Gateway): 502

Данный код сообщения выводится, когда сервер является промежуточным звеном, и дальнейший доступ через него запрещен или невозможен.

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

Сервер недоступен (Server Unavailable): 503

Сервер может отказать посетителю в обработке запроса или процесса по нескольким причинам.

Это может быть техническая неисправность, проблема с сервисом хостинга или перегрузка количеством других запросов, обрабатываемых в это время.

Время ожидания шлюза истекло (Gateway Timeout): 504

Код используется, когда промежуточный сервер между двумя другими не дает ответа, блокируя пакеты и тем самым превышая время, отведенное на запрос.

Чаще всего встречается в случаях, когда сервер сам является шлюзом или подключается к нему для передачи информационных данных.

Версия протокола не может быть использована (HTTP Version Not Supported): 505


Необходима в тех случаях, когда в программе-обозревателе не соответствует версия HTTP указанная сервером. Проблема возникает либо при использовании очень старых браузеров или неправильно заданных запросов.

Как вариант – доступ предоставляется через защищенный протокол HTTPS, а клиент задает HTTP вручную или переходит по такой ссылке и наоборот.

Вариант не устраивает (Variant Also Negotiates): 506

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

Для хранения недостаточно места (Insufficient Storage): 507

Каждый запрос кешируется, а значит, требует определенного пространства на жестком диске сервера. Если он забит неверно настроенными логами или другим кешем, и места недостаточно, то ответ последует в виде ошибки 507.

Лимит пропускной способности исчерпан (Bandwidth Limit Exceeded): 509

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

Однако на всякий случай каждый веб-дизайнер популярной площадки должен знать об этой ошибке, которая говорит о том, что лимиты используемого трафика превышены.

Запрещен к распространению (Not Extended): 510

Если серверу не предоставлено достаточно данных о клиенте, он отказывает ему как неизвестному или неопознанному посетителю в предоставлении информации.

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

Авторизация в сети не пройдена (Network Authentication Required): 511

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

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

Заключение

Оперируя сообщениями сервера, администратор всегда может увидеть, в чем причина возникновения неполадок или снижения посещаемости ресурса.

Также он сможет посмотреть, кто и как перенаправляется на необходимые ресурсы, наблюдать за поведением пользователей на страницах сайта, проследить за обменом данными между клиентами и сервером.

Проверка кода ответа сервера с помощью cURL

Чтобы увидеть только код ответа страницы достаточно выполнить такую команду:

Или, если хотите, чтобы ответ выглядел более естественно:

Страницы вернули 200, все в порядке. Но отправляет ли сервер редирект для нужных нам страниц? Если ваш сайт работает на https, то все запросы http должны перекидываться на https, также для любого сайта, все запросы на www домен должны перенаправляться на основной, или наоборот. Запросы на ip сайта тоже в идеале должны отправляться на основной домен. Проверка http ответа:

Все работает так, как нужно. Но смотреть код ответа сервера вряд ли понадобиться, намного интереснее проверка http статусов.

Методы проверки ответа сервера

Чтобы проверить код ответа сервера есть разные варианты, все зависит от ситуации — нужно ли вам определить статус страницы своего/чужого сайта, предпочитаете использовать онлайн сервисы или десктопные приложения, это будет массовая проверка кодов ответа сервера или одна страница и т.п. Рассмотрим поочередно все возможности.

Код ответа сервера в Яндекс.Вебмастере

В строке ввода указываете URL, а справа выбираете тип поискового робота для захода на страницу. Через некоторое время отобразится разная служебная информация по запросу. К сожалению, проверить код ответа сервера в Яндекс можно только на своих подтвержденных проектах и только внутри панели вебмастеров. Регистрация и добавления сайта, понятно дело, занимает определенное время, поэтому, метод не самый быстрый и простой.

Сервисы проверки ответа сервера

Разных веб-проектов, позволяющих проверить ответ сервера достаточно много. Из наших больше всего внушает доверие следующие три варианта:


Среди множества SEO инструментов портала PR-CY нашлась нужная нам функция проверки заголовков сервера. Кроме самого статуса выводится некоторая дополнительная информация.

Онлайн сервис специально создан для определения кода ответа сервера. Поддерживается gzip сжатие, кириллические домены, имеется выбор User Agent’а, а также мобильная версия. Выглядит симпатично.

Если по каким-то причинам предыдущие варианты не сработали, попробуйте данный проект с инструментами вебмастера. Недостатком сайта можно назвать очень большое количество рекламы, хотя на работу это не влияет.

Англоязычных сервисов, где можно проверить ответ сервера еще больше. Один из первых в выдаче — httpstatus.io. Тут все предельно просто: вводите адрес страницы, выбираете (если нужно) дополнительные параметры запроса и кликаете Submit.

Очень часто функцию проверки HTTP кода состояния страниц можно встретить на тематических SEOшных порталах или даже блогах. Инструменты от Seobook — отличный тому пример. Особенностью сервиса есть возможность исследования сразу нескольких страниц.

Netpeak Spider — программа проверки ответа сервера

Когда-то я уже рассказывал о полезном софте от Netpeak. Для решения текущей задачи нам пригодится их программа Netpeak Spider, которая позволяет анализировать внутренние страницы проекта. Помимо поиска битых линков, дубрей, выгрузки МЕТА тегов и работы со ссылками, с ее помощью можно узнать разные параметры страниц сайта (в том числе и код ответа сервера).

HEADMasterSEO

Софт позволяет получить статусы ответов сервера для большого списка линков, а также считывает ряд других параметров: редиректы, время отклика, ссылки в head, X-Robots-Tag и т.п. Результаты можно сортировать, фильтровать и экспортировать в CSV. Работает программа под Windows и Mac OS X. Честно, не совсем понимаю, что значит ограничее 500 урлов «за одну операцию» — если допускается повторный запуск программы с новыми ссылками, то это безусловно удобнее чем юзать Tor для онлайн чекеров или запускать по 50 линков.

Проверка http заголовков с помощью Curl

Для проверки заголовков мы тоже можем использовать утилиту curl. Чтобы вывести заголовки страницы запустите ее с опцией -I:

Здесь отображается код ответа сервера, а также принятые http заголовки. Из них мы можем сделать такие выводы:

  • Страница сгенерирована в nginx 1.10.2;
  • Это обычная html страница (text/html);
  • Размер страницы 102452 байт или 100 кб;
  • Страница последний раз изменялась 18:13:12 (last_modified) это очень важный параметр для поисковых систем;
  • Сервер будет выдавать разные версии страниц при изменении поля Accept-Encoding (Vary);
  • Страница может храниться в любом кэше (public) на протяжении часа (expires);

Таким способом может быть выполнена проверка http заголовков для любой страницы или ресурса чтобы сразу определить все ли отправляется правильно. Например, посмотрим заголовки для изображения:

Мы можем видеть, что картинка будет храниться в кэше намного дольше (max-age) чем html страница.

Осталось проверить работают ли такие заголовки, как If-Modified-Since и If-None-Match. Первый позволяет выполнять проверку актуальности кэша по дате модификации, второй — по контрольной сумме поля ETag. Кэш очень важен, чтобы снизить нагрузку на ваш сервер. Если страница не изменилась, то сервер лишь сообщает что она не изменилась, отправляя код ответа 304, вместо передачи полного файла.

Конечно, вы можете использовать для этого онлайн сервисы, но работают они плохо и не всегда показывают верное значение. Поэтому пользуемся опять curl.

Проверка If-Modified-Since

Сначала запрашиваем нашу страницу для просмотра заголовков http, а затем копируем поле Last-Modified:

Теперь запрашиваем ее еще раз, но уже с заголовком If-Modified-Since: и ваша дата:

В ответ вы должны получить не саму страницу, а только заголовок HTTP/1.1 304 Not Modified. Если так, значит проверка кода ответа сервера пройдена и все работает верно.

Проверка If-None-Match

Заголовок If-None-Match работает похожим образом, только здесь используется значение контрольной суммы кэша из поля ETag. Опять запросим нашу страницу и скопируем сумму:

Затем отправим полученную сумму с заголовком:

И снова мы должны получить ответ 304, страница не изменена.

Проверка сжатия

Сжатие позволяет уменьшить размер передаваемых данных, но в то же время создает дополнительную нагрузку на сервер. Чтобы проверить поддерживает ли сервер сжатие gzip нужно отправить в запросе заголовок Accept-Encoding с параметром gzip:

В ответе мы увидим поле Content-Encoding: gzip. Это будет означать, что сжатие используется.

Какие коды ответа сервера существуют


Всего выделяется пять типов кодов состояния сервера:

  • Информационные (1хх) – коды этой группы дают понять, что на данный момент запросы обрабатываются в штатном режиме. Например, код ответа сервера 100 обозначает, что пользователем был создан корректный запрос и его приняли в очередь по обработке.
  • Свидетельствующие об успешном завершении запроса (2хх) – коды означают, что те данные, которые браузер запрашивал у сервера, были успешно ему переправлены. Самым популярным среди кодов данного вида является код 200, который подтверждает, что запрос был полностью завершен и никаких проблем с обработкой не возникло. Код 202, наоборот, говорит о том, что запрос не может быть обработан по какой-либо причине.
  • Коды переадресации (3хх) – коды сообщают пользователю, что для успешного выполнения, поданного пользователем запроса, необходимо сделать еще один запрос к другому URI. Наиболее часто встречается код 301, который подразумевает, что страница с запрашиваемого ресурса была перемещена навсегда. В результате поисковые системы исключают старый адрес из поисковой базы и включают в нее уже новый. Код же 302 говорит о том, что страница недоступна по запрашиваемому адресу только временно.
  • Ошибка со стороны клиента (4хх) – коды означают, что в результате неверно сформированного запроса он не может быть обработан сервером. В данной группе кодов состояния самым распространенным является код ответа сервера 404, который означает, что страница по запрашиваемому адресу не существует либо она была удалена. Более подробно об этом мы писали тут.
  • Ошибка со стороны сервера (5хх) – коды дают понять, что сбой в обработке корректно сформированного запроса произошел из-за ошибки на сервере. Например, иногда сервер может столкнуться с такими условиями, которые не позволяют ему продолжить дальнейшую обработку запросов и тогда сайт выдаст сообщение с кодом 500. Если же запрос не может быть обработан в результате перегрузки сервера или же проведения технических работ в ответе будет указан код 503.

После создания сайта администратору следует обязательно проверить ответ сервера хотя бы у нескольких страниц сайта, чтобы быть уверенным в том, что поисковики верно интерпретируют цифры, выдаваемые в ответ на запросы. Для решения данной задачи владельцы сайтов, могут использовать различные онлайн-сервисы.

Популярные коды статусов HTTP

  • 200 OK — запрос выполнен успешно. Если у вас при проверке отображается код ответа сервера 200, значит с этой страницей все хорошо.
  • 301 Moved Permanently — мы уже встречались с этим вариантом в статье про 301 редирект. Он означает, что страница навсегда перемещена на другой адрес (URL). При этом передается почти весь ссылочный вес.
  • 302 Moved Temporarily — запрашивая страница временно доступна по другому адресу.
  • 404 Not Found — по указанному УРЛу ничего не найдено. Желательно создать на своем сайте эффективную страницу 404 ошибки, где пользователю отображалась бы соответствующая информация и рекомендации.
  • 403 Forbidden — ограничение прав доступа к конкретной странице. Администратор сайта может специально закрыть от пользователей системные файлы или директории. Также это может свидетельствовать об ошибке установки прав на папку.
  • 401 Unauthorized — если для доступа к странице нужна аутентификация, то используется этот HTTP код статуса.
  • 408 Request Timeout — истекло время ожидания сервером. Бывает при загрузке пользователем слишком объемного файла на сайт.
  • 500 Internal Server Error — код ответа сервера 500 означает любую ошибку, не описанную в других статусах 5xx.
  • 502 Bad Gateway — свидетельствует о проблемах в работе сервера DNS, прокси или хостинг провайдера. Обычно траблы возникают с последним — можете смело писать в тех.поддержку и спрашивать почему не работает сайт.
  • 503 Service Unavailable — данный код означает, что сервер недоступен по техническим причинам (будь то перегрузка или отключение на тех.обслуживание). С помощью параметра Retry-After можно указать рекомендуемое время повторения запроса. В любом случае поисковые роботы позже еще зайдут на ваш сайт.

Данные коды состояния HTTP попадаются вебмастерам наиболее часто, остальные, как я уже сказал выше, смотрите в Wikipedia.

Как проверить код ответа сервера для страницы вашего сайта

Собственно, узнать какие именно сообщения присылает сервер в ответ на определенный запрос достаточно просто.

Для этого нужно воспользоваться услугами какого-то сервиса по анализу сайтов или, например, панелью вебмастера Яндекс, вернее одной из её возможностей — Проверка ответа сервера.

Напомним, что перед этим необходимо зарегистрировать сайт в поисковых системах и в нужных панель инструментов, в данном случае — в Яндексе.

Но этого недостаточно. Необходимо проверить, как он реагирует на запрос несуществующих страниц, а также на «www.sitesnulya.ru» (главное зеркало — без www).

Проверка на склейку зеркал сайта (www и без него):

У нас всё работает и если ввести в адресную строку www.sitesnulya.ru попадете все равно на sitesnulya.ru

Почему этот так важно рассмотрим дальше

Проверка ответа сервера в онлайн сервисах

После активации процесса чуть ниже вы получите ответ со всеми раскладами:

Сервис Checkmy предлагает пользователям не только выбор приложения (User Agent), с которого будет отправлен запрос, но и использования заголовков If-Modified-Since и Accept-Encoding, о которых велась речь выше.

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

На сайте есть еще такая фишка как закладка для браузера, которая обеспечит скоростную проверку любой веб-страницы, на которую вы перейдете. Для этого достаточно прокрутить страницу вниз до нужного места, нажав на ссылку «Быстрый доступ» из верхнего меню. Затем, захватив левой кнопкой мышки кнопку «Checkmy», переместить ее на панель закладок браузера:

2xx Success (Успех)

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

200 OK Код состояния 200, наверное, является наиболее популярным, но в то же время очень неприметным в плане использования. Он указывает, что передача данных между сервером и пользователем подошла к завершению, и все прошло так, как должно. Когда этот код нужно использовать? Постоянно!

201 Created (Создан) В связи с успешным выполнением запроса создался новый ресурс. К примеру, благодаря запросу юзера сгенерирован такой ранее не существующий веб-ресурс, как новая страница. Исходной сервер настроен так, что обязан создать ресурс еще до отправки 201 кода. Если документ не может быть сгенерирован своевременно, сервер использует в качестве альтернативы код 202 (принят).

202 Accepted (Принят) Текущий запрос был передан в стадию обработки, но в силу объективных факторов является незавершенным. Запрос к серверу может быть не завершенным, это зависит от факта, успешно ли прошла обработка и не отклонили ли его.

В каких случаях подобный ответ может быть использован? Когда сервер не в состоянии выполнять запрос в тот момент, когда он делается. Принудительное выполнение запроса не предусматривается, а клиент не должен ожидать пока сообщение будет передано окончательно, поскольку высока вероятность длительного процесса обработки.

203 Non-Authoritative Information (Недостоверная информация) Серверу удалось полностью обработать запрос, но передаваемые данные не были взяты из первостепенного источника (резервная копия, другой сервер и т. д.) и поэтому информация может быть нерелевантной. Этот код имеет большое сходство с 200 серверным ответом, но указывает, что данные не были получены из источника.

Когда применяют подобный ответ сервера? Ним можно заменить 200 код, если отправитель имеет веские основания полагать, что заголовки ответов из внешнего источника отличаются от тех, которые были предоставлены исходным сервером.

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

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

205 Reset Content (Сброс контента) Код обозначает успешную обработку запроса сервером c отсутствующим возвратом контента. В отличие от 204 кода, этот ответ требует, чтобы документ был обновлен.

Когда может применяться такой код? Обычно он используется в случаях, заполнения пользователем формы, и отправки сервером браузеру запроса на очистку этой формы. Он имеет сходство с 204 кодом, но выдвигает требование к пользователю по сбросу документа после завершения обработки. К примеру, требуется провести очистку HTML-формы после верификации.

206 Partial Reset (Частичный сброс) Сервер возвращает только часть контента, которая соответствует заголовку, отправленному клиентом. В основном его используют расширенные инструменты кэширования. Такое бывает, когда пользователь хочет получить лишь небольшую часть контента страницы, а сервер в своем ответе предоставляет данные только для этой части страницы.

Каковы способы применения этого кода? Преимущественно этот код используется из-за запроса If-Range, применимого в мощных кеш-валидаторах. Обращение также должно включать заголовки областей, которые используются в качестве параметров для области возвращаемой информации.

207 Multi-Status (Мультистатус) Сервер параллельно предоставляет результаты нескольких независимых операций, которые включаются в тело сообщения в виде XML-документа.


С этим читают