Вступ до HTTP: усе, що вам потрібно знати

У цій статті я розповім вам про те, як всесвітня павутина працює на фундаментальному рівні.

Основною технологією є HTTP - протокол передачі гіпертексту. Це протокол спілкування, який ви використовуєте під час перегляду веб-сторінок.

Принципово, коли ви відвідуєте веб-сайт, ваш браузер робить HTTP-запит на сервер. Потім цей сервер відповідає ресурсом (зображенням, відео або HTML веб-сторінки) - який ваш браузер відображає для вас.

Це модель на основі повідомлень HTTP. Кожна взаємодія HTTP включає запит та відповідь.

За своєю природою HTTP є без громадянства.

Без громадянства означає, що всі запити окремі один від одного. Отже, кожен запит вашого браузера повинен містити достатньо інформації самостійно, щоб сервер міг виконати запит. Це також означає, що кожна транзакція на основі повідомлень моделі HTTP обробляється окремо від інших.

URL-адреси

URL (Uniform Resource Locator) - це, мабуть, найвідоміша концепція Інтернету. Це також одне з найбільш важливих і корисних понять. URL - це веб-адреса, яка використовується для ідентифікації ресурсів в Інтернеті.

Ідея Інтернету структурована навколо ресурсів. З самого початку Інтернет був платформою для обміну текстовими / HTML-файлами, документами, зображеннями тощо, і як такий його можна вважати сукупністю ресурсів.

Протокол  - найчастіше це HTTP (або HTTPS для захищеної версії HTTP).

Іншими відомими протоколами є:

  • Протокол передачі файлів (FTP) - це стандартний протокол, що використовується для передачі файлів між клієнтом та сервером через мережу.
  • Простий протокол пересилання пошти (SMTP) є стандартом передачі електронної пошти.

Домен  - ім'я, яке використовується для ідентифікації однієї або декількох IP-адрес, де знаходиться ресурс.

Шлях - визначає розташування ресурсу на сервері. Він використовує ту саму логіку, що і розташування ресурсу, що використовується на пристрої, де ви читаєте цю статтю (тобто /search/cars/VWBeetle.pdf або C: / my cars / VWBeetle.pdf).

Параметри  - Додаткові дані, що використовуються для ідентифікації або фільтрації ресурсу на сервері.

Примітка : Під час пошуку статей та додаткової інформації про HTTP ви можете зустріти термін URI (або єдиний ідентифікатор ресурсу). URI іноді використовується замість URL-адреси, але переважно в офіційних специфікаціях та людьми, які хочуть похизуватися. :)

Запити HTTP

У HTTP кожен запит повинен мати URL-адресу. Крім того, запит потребує методу. Чотири основні методи HTTP:

  • ОТРИМАТИ
  • ВСТАНОВИТИ
  • ПОСТ
  • ВИДАЛИТИ

Я поясню ці методи та багато іншого у розділі Методи HTTP цієї статті.

І ці методи безпосередньо відповідають діям:

  • читати
  • оновлення
  • створити
  • видалити

Усі повідомлення HTTP мають один або кілька заголовків, за якими слід необов’язковий текст повідомлення. Тіло містить дані, які будуть надіслані разом із запитом, або дані, отримані з відповіддю.

Перша частина кожного запиту HTTP містить три елементи:

Приклад:

  • GET / add / search-result? Item = vw + жук HTTP / 1.1

Коли URL-адреса містить "?" знак, це означає, що він містить запит. Це означає, що він надсилає параметри запитуваного ресурсу.

  1. Перша частина - це метод, який повідомляє, який метод HTTP використовується. Найчастіше використовується метод GET. Метод GET отримує ресурс з веб-сервера, і оскільки GET не має тіла повідомлення, після заголовка не потрібно нічого.
  2. Друга частина - це запитувана URL-адреса.
  3. Третя частина - версія HTTP, що використовується. Версія 1.1. є найпоширенішою версією для більшості браузерів, однак версію 2.0 бере на себе.

У запиті HTTP є також кілька цікавих речей:

Заголовок Referer  - повідомляє URL-адресу, звідки походить запит.

Заголовок User-Agent  - додаткова інформація про браузер, який використовується для генерації запиту.

Заголовок хосту  - однозначно ідентифікує ім'я хосту; це необхідно, коли на одному сервері розміщено кілька веб-сторінок.

Заголовок cookie  - подає клієнту додаткові параметри.

Відповіді HTTP

Як і в запитах HTTP, відповіді HTTP також складаються з трьох елементів:

Приклад:

HTTP / 1.1 200 OK

  1. Перша частина - версія HTTP, що використовується.
  2. Друга частина - це числовий код результату запиту.
  3. Третя частина - це текстовий опис другої частини.

У відповіді HTTP є ще кілька цікавих речей:

Заголовок сервера  - інформація про те, яке програмне забезпечення веб-сервера використовується.

Заголовок Set-Cookie  - видає файл cookie браузеру.

Тіло повідомлення  - зазвичай для відповіді HTTP утримується тіло повідомлення.

Заголовок Content-Length  - повідомляє розмір тіла повідомлення в байтах.

Методи HTTP

Найпоширеніші методи - GET та POST. Але є й кілька інших.

GET  - Ви використовуєте цей метод для запиту даних із зазначеного ресурсу, якщо дані жодним чином не змінюють їх. Запити GET не змінюють стан ресурсу.

POST  - Ви використовуєте цей метод для надсилання даних на сервер для створення ресурсу.

PUT - Ви використовуєте цей метод для оновлення наявного ресурсу на сервері, використовуючи вміст у тілі запиту. Подумайте про це як про спосіб «відредагувати» щось.

HEAD  - Ви використовуєте цей метод так само, як і GET, але з тією різницею, що повернення методу HEAD не повинно містити body у відповіді. Але повернення міститиме ті самі заголовки, що якби використовувався GET. Ви використовуєте метод HEAD, щоб перевірити наявність ресурсу до подання запиту GET.

СЛІД -  Ви використовуєте цей метод для діагностичних цілей. Відповідь міститиме у своєму тілі точний зміст повідомлення запиту.

ВАРІАНТИ  - Ви використовуєте цей метод для опису варіантів зв'язку (методи HTTP), доступних для цільового ресурсу.

PATCH -  Ви використовуєте цей метод, щоб застосувати часткові зміни до ресурсу.

ВИДАЛИТИ - Ви використовуєте цей метод для видалення зазначеного ресурсу.

Відпочинок

Передача представницького стану (REST) ​​- це стиль архітектури, де запити та відповіді містять уявлення про поточний стан системного ресурсу.

“Регулярний” спосіб:

  • //carapp.com/search?make=wv&model=beetle

REST-стиль:

  • //carapp.com/search/vw/beetle

Ви можете дізнатись більше про REST тут, якщо вам цікаво.

Заголовки HTTP

Є три основні компоненти, що складають структуру запиту / відповіді. До них належать:

  • Перша лінія
  • Заголовки
  • Тіло / Зміст

Ми вже говорили про перший рядок у HTTP-запитах та відповідях, також згадувались функції тіла. Зараз ми поговоримо про заголовки HTTP.

Заголовки HTTP додаються після першого рядка і визначаються як пари name: value, розділені двокрапкою. Заголовки HTTP використовуються для надсилання додаткових параметрів разом із запитом або відповіддю.

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

Існують різні типи заголовків, які групуються на основі їх використання у 4 широкі категорії:

  • Загальний заголовок  - заголовки, які можуть використовуватися як у запитах, так і в повідомленнях відповідей і які не залежать від даних, якими обмінюються.
  • Заголовок запиту  - Ці заголовки визначають параметри для запитуваних даних або параметри, що дають важливу інформацію про клієнта, який робить запит.
  • Заголовок відповіді  - Ці заголовки містять інформацію про вхідну відповідь.
  • Заголовок  сутності - Заголовки сутності описують вміст, що становить тіло повідомлення.

Коди стану HTTP

Переглядаючи веб-сторінки, ви могли зіткнутися зі сторінками "Помилка 404: не знайдено" або Сторінки "500 помилок: сервер не відповідає"

Це коди стану HTTP.

Кожне повідомлення HTTP-відповіді має містити код стану HTTP у першому рядку, повідомляючи нам результат запиту.

Існує п’ять груп кодів стану, які згруповані за першою цифрою:

  • 1xx - Інформаційний.
  • 2xx - запит успішний.
  • 3xx - Клієнт перенаправляється на інший ресурс.
  • 4xx - Запит містить якусь помилку.
  • 5xx - Під час виконання запиту на сервері сталася помилка.

Ось повний перелік кодів відповідей статусу HTTP та їх пояснення.

HTTPS (захищений протокол передачі гіпертексту)

Захищеною версією протоколу HTTP є HyperText Transfer Protocol Secure (HTTPS). HTTPS забезпечує зашифроване спілкування між браузером (клієнтом) та веб-сайтом (сервером).

У протоколі HTTPS протокол зв'язку шифрується за допомогою захисту транспортного рівня (TLS) або рівня захищених сокетів (SSL).

Тому протокол також часто називають HTTP через TLS або HTTP через SSL.

І протоколи TLS, і SSL використовують асиметричну систему шифрування. Асиметричні системи шифрування використовують відкритий ключ (ключ шифрування) та закритий ключ (ключі дешифрування) для шифрування повідомлення.

Будь-хто може використовувати відкритий ключ для шифрування повідомлення. Однак приватні ключі є секретними, і це означає, що розшифрувати повідомлення може лише призначений одержувач.

Рукостискання SSL / TLS

Коли ви запитуєте з'єднання HTTPS з веб-сайтом, веб-сайт надсилає свій SSL-сертифікат у ваш браузер. Цей процес, коли ваш браузер і веб-сайт ініціюють спілкування, називається «рукостисканням SSL / TLS».

Рукостискання SSL / TLS включає ряд кроків, коли браузер і веб-сайт перевіряють один одного і починають спілкування через тунель SSL / TLS.

Як ви, напевно, помітили, коли під час з'єднання HTTPS використовується надійний захищений тунель, в адресному рядку браузера відображається зелений значок замка.

Переваги HTTPS

Основними перевагами HTTPS є:

  • Інформація про клієнта, як-от номери кредитних карток та інша конфіденційна інформація, зашифрована і не може бути перехоплена.
  • Відвідувачі можуть підтвердити, що ви зареєстрована компанія та що ви є власником домену.
  • Клієнти знають, що вони не повинні відвідувати сайти без HTTPS, і тому вони частіше довіряють і здійснюють покупки на сайтах, які використовують HTTPS.

Дякую за читання! Перегляньте більше подібних статей у моєму профілі freeCodeCamp. А також перегляньте інші цікаві речі, які я будую на своїй сторінці GitHub.