Клієнт-серверна архітектура дозволяє здійснювати операції в інтернеті. У цій схемі взаємодії виділяють дві сторони: замовник (клієнт) і постачальник (сервер). Клієнтом може виступати будь-яка програма, підключена до мережі, яка надсилає сформовані запити і обробляє відповідь сервера.
До клієнтів відносяться:
- браузер;
- мобільний додаток;
- розумна побутова техніка;
- серверний додаток.
Сервер – це машина, приєднана до мережі, основне завдання якої отримати запит, обробити його та надіслати відповідь клієнту у певному форматі.
До серверів належать:
- локальний веб-сервер;
- будь які сервери HTTP;
- набори серверних машин.
Клієнт та сервер обмінюються між собою повідомленнями «запит-відповідь» – їх називають мережевими протоколами.
Браузер (клієнт) починає діалог з сервером за допомогою HTTP протоколу, відправляючи запит, де вказано яку інформацію і в якому вигляді він очікує отримати. Сервер, після отримання запиту і його обробки, надсилає браузеру певне повідомлення (HTTP відповідь), яке містить запитані дані (зазвичай це HTML документ). Ці повідомлення містять корисну інформацію і спеціальні коди стану, за якими браузер може визначити, чи успішно був оброблений запит.
Підсумок обробки запиту, який знаходиться в першому рядку відповіді серверу, називають кодом відповіді або кодом стану. Ці повідомлення відправляються кожен раз під час взаємодії браузера і серверу, навіть якщо користувачеві сайту вони не доступні.
Коди відповіді діляться між собою на класи. Класс стану позначений у першій цифрі, яка і визначає стан сторінки, дві інші цифри – уточнюють його.
Визначають п’ять класів кодів стану:
- 1xx – інформаційні коди. Вони відповідають за обробку інформації, повідомляють про те, що запит був прийнятий та передача продовжується;
- 2xx – успішна обробка. Запит отриманий сервером і виконаний без помилок;
- 3xx – перенаправлення ( редірект). Код повідомляє про необхідність надіслати запит за іншою адресою при зміні розположення запитуваного файлу;
- 4xx – помилка на боці клієнта. Вона вказує на те, що заданий файл не знайдений за заданою адресою;
- 5xx –помилка на боці сервера. Під час виконання запиту відбувся збій серверу.
Щоб дізнатися код стану запиту в браузері, необхідно відкрити інструменти веб-розробника. Значення коду знаходиться в стовпці «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» (сервис тимчасово недоступний) – недоступність сервера, яка має технічний характер.
Причини:
- сервер перевантажений;
- сервер знаходиться на техобслуговуванні.
При тестуванні програмного інтерфейсу додатку – API (Application Programming Interface) використовують запити HTTP. Сервер, у відповідь на запити клієнта, відправляє різні коди. Вони можуть вказувати на помилку або інформувати про стан сервера. API надають користувачам ці дані. Процедура обміну інформацією і формат передачі даних структуровані так, щоб обидві сторони знали, як взаємодіяти між собою.
За допомогою API можна виявити наступні помилки в ПЗ:
- некоректна обробка даних;
- відсутність або дублювання функціоналу;
- проблеми із безпекою API;
- проблеми з продуктивністю;
- невірно структуровані відповіді (JSON или XML);
- питання багатопоточності.
Не тільки фахівцям в сфері ІТ важливо розуміти причини HTTP помилок. Коди пов'язані з функціональною роботою ресурсу і повідомляють про стан сторінок. Завдяки інформації, яку несе кожен код після запиту користувача, сервер змінює обробку документа. У разі появи помилки, знаючи результат запиту, можна ще й самостійно її усунути. Також діагностика кодів помилок дозволяє виявити слабкі місця ПЗ.