Как мы знаем, клиент-серверная архитектура позволяет совершать разнообразные операции на просторах Интернета. В подобной схеме взаимодействия можно выделить 2 базовые стороны: клиент (заказчик) и сервер (поставщик услуг).
Клиентом в данном случае может быть любое программное обеспечение, которое имеет подключение к сети, отправляет сформированные запросы и обрабатывает ответы, исходящие от сервера.
Клиентами могут выступать:
- веб-браузеры;
- мобильное ПО;
- умная встроенная бытовая техника;
- разнообразные серверные приложения.
Сервер – виртуальная машина, которая имеет подключение к сети. Ее базовая задача – получение запросов, их обработка и отправка клиенту данных в определенном формате.
К серверам причисляют:
- Локальный веб-сервер;
- Любой сервер на основе HTTP;
- Специализированные наборы серверных машин.
Веб-браузер начинает диалог с сервером на базе HTTP-протокола, отправляя запрос, в котором указано, какие именно данные и какого типа он ожидает получить на вход. Сервер, сразу же после получения запроса и его обработки, направляет браузеру определенное сообщение (так называемый HTTP-ответ), который содержит запрошенную информацию (как правило, это HTML документ). Подобные сообщения содержат данные и специальные коды текущего состояния, по которым веб-браузеры могут определять, успешно ли был обработан входящий запрос.
Конечный итог обработки запроса, который всегда содержится в 1 строке ответа сервера, именуется кодом ответа или кодом текущего состояния. Данные сообщения отправляются каждый раз при взаимодействии веб-браузера и сервера, даже если пользователю сайта они не видны.
Виды кодов ответов
Все коды ответов можно разделить между собой на определенные классы. Класс состояния обозначается 1 цифрой, которая должна определять состояние веб-страницы, две остальные цифры носят уточняющий характер.
Выделяют 5 классов кодов по состоянию:
- 1хх – группа информационных кодов. Их задача состоит в обработке информации, создании сообщения о том, что текущий запрос принят, и передаче данных.
- 2хх – успешная обработка запроса. Запрос уже получен сервером и успешно выполнен без каких-либо ошибок.
- 3хх – перенаправление (англ. redirect). Данный код сообщает о текущей необходимости отправить запрос по иному адресу при смене расположения нужного файла.
- 4хх – ошибки на стороне пользователя. Такие ошибки могут указывать на то, что данный файл по запрашиваемому адресу не найден.
- 5хх – ошибки на стороне сервера. При выполнении запроса случился сбой сервера.
Для того, чтобы узнать код состояния запроса в веб-браузере нужно открыть панель инструментов веб-разработчика. Значение кода будет доступно в столбце «Status» в специальной вкладке «Network». После того, как консоль будет открыта, нужно обновить страницу.
Часто встречающиеся ошибки
Ошибка 400
«Неверный запрос» (Bad request) – неверно сформулированный запрос (допущенная синтаксическая ошибка в теле запроса). Пользовательский клиент может попробовать загрузить очень большой файл. Из-за этого запрос может быть сформирован некорректно, заголовки HTTP могут содержать ошибки и так далее.
Возможные причины:
- Работа веб-браузера блокируется антивирусом;
- Работа веб-браузера блокируется включенным брандмауэром Windows;
- Неверные конфигурации веб-браузера;
- Некачественное интернет-соединение.
Ошибка 403
«Доступ запрещен» (Forbidden) – текущий запрос не может быть обработанным из-за некоторых ограничений доступа к запрашиваемым данным.
Возможные причины:
- Некоторая ошибка внутри индекса файла;
- У сервера нет права доступа к нужной части информации;
- Группа файлов находится в неверно указанной директории.
Ошибка 404
«Файл не найден» (Not Found) – очень часто встречаемая ошибка в сети. Она указывает на то, что определенный файл по текущему адресу не может быть найден. Пользователям чаще всего встречается ошибка 404 при работе с так называемыми «битыми ссылками».
Возможные причины:
- Несуществующий URL;
- На текущем сервере полностью отсутствуют запрашиваемые файлы и конфигурации.
Ошибка 500
«Внутренняя ошибка сервера» (Internal Server Error) – может возникнуть непредвиденная пользователем ситуация на сервере, которая запросто классифицируется в другие известные коды сетевых ошибок.
Причины возникновения:
- Сценарий не запускается сервером;
- Скрипт содержит массу ошибок;
- Некорректный синтаксис файла .htaccess (вписана некорректная конструкция).
Ошибка 502
«Плохой шлюз» (Bad Gateway) – сервер получает ответ о наличии ошибки или полном отсутствии связи от следующего виртуального сервера, к которому он выполнил «сетевое обращение».
Возможные причины:
- Недостаточные возможности ресурсов сервера;
- Неверная работа прокси-сервера.
Ошибка 503
«Сервис временно недоступен» (Service Temporarily Unavailable) – текущая недоступность сервера, которая сопряжена с некоторыми техническими неурядицами.
Возможные причины:
- Сервер находится в перегруженном состоянии;
- Сервер в данный момент находится на техническом обслуживании.
Практически любой тестировщик во время своей повседневной работы, так или иначе, сталкивается с разнообразными проверками запросов и сопряженными с ними ошибками. При тестировании работоспособности URL, важное значение имеет именно код ответа сервера, в особенности тот, который должен вести на несуществующую в природе страницу (ошибка с кодом 404).
Во время тестирования любого программного интерфейса приложения применяют именно запросы HTTP. Сервер, в свою очередь, на все запросы клиента может отправлять разнообразные коды. Данные коды демонстрируют ошибки или информируют пользователя о текущем состоянии сервера.
API (англ. application programming interface) позволяют предоставить клиентам подобные данные. Процесс обмена данными и формат передачи информации четко структурирован, а значит, клиент и сервер точно знают, как им правильно взаимодействовать между собой.
На основе API можно быстро находить и идентифицировать такие баги в ПО, как:
- Неверная работа данных;
- Дублирование или полное отсутствие функционала;
- Некоторые проблемы с безопасностью API;
- Некорректное функционирование системы веб-безопасности;
- Неверно структурированные ответы;
- Некоторые вопросы многопоточности.
В заключение
Не только специалистам из сферы ИТ важно понимать специфику и природу возникновения HTTP-ошибок. Коды в первую очередь связанны с особенностями функциональной работы ресурса и уведомляют клиента о текущем состоянии веб-страниц.
Именно благодаря информации, которую может нести каждый код ошибки после запроса пользователя, сервер может изменять обработку данных. При ситуации, когда появляется ошибка, зная итог запроса, можно собственными силами попробовать устранить проблему.
Дополнительно можно отметить, что подобная диагностика кодов ошибок (при тестировании безопасности) позволяет обнаружить некоторые слабые места в тестируемом программном обеспечении.
Оставить комментарий