HTTP: відмінності між версіями
[перевірена версія] | [перевірена версія] |
Вилучено вміст Додано вміст
Shkod (обговорення | внесок) Немає опису редагування |
|||
Рядок 1:
{{IPstack}}
'''HTTP'''
'''HTTP''' належить до протоколів моделі [[OSI]] 7-го [[Прикладний рівень|прикладного рівня]].
Основним призначенням протоколу HTTP є передача [[веб-сторінка|веб-сторінок]] ([[текстовий файл|текстових файлів]] з розміткою [[HTML]]), хоча за допомогою нього успішно передаються і інші [[файл]]и, які пов'язані з веб-сторінками ([[Цифрове зображення|зображення]] і [[застосунки]]), так і не пов'язані з ними (у цьому HTTP конкурує з складнішим [[FTP]]).
HTTP припускає, що клієнтська програма
== Структура протоколу ==
HTTP
Кожен запит/відповідь складається з трьох частин:
Рядок 22:
‹Метод› ‹URI› HTTP/‹Версія›
де ‹Метод› можливо:
; OPTIONS: Повертає методи HTTP, які підтримуються сервером. Цей метод може служити для визначення можливостей веб-сервера.▼
; GET: Запрошує вміст вказаного ресурсу. Запитаний ресурс може приймати параметри (наприклад, пошукова система може приймати як параметр шуканий рядок). Вони передаються в рядку URI (наприклад: http://www.example.net/resource?param1=value1¶m2=value2). Згідно зі стандартом HTTP, запити типу GET вважаються ідемпотентними
▲: Повертає методи HTTP, які підтримуються сервером. Цей метод може служити для визначення можливостей веб-сервера.
; HEAD: Аналогічний методу GET, за винятком того, що у відповіді сервера відсутнє тіло. Це корисно для витягання мета-інформації, заданої в заголовках відповіді, без пересилання всього вмісту. Зокрема, [[клієнт]] чи [[проксі]], перевіривши заголовок Last-Modified: (останній час модифікації), таким чином може переконатися, що сторінка на сервері не змінилася від часу попереднього запиту.▼
; POST: Передає призначені для користувача дані (наприклад, з HTML-форми) заданому ресурсу. Наприклад, в [[блог]]ах відвідувачі зазвичай можуть вводити свої коментарі до записів в HTML-форму, після чого вони передаються серверу методом POST, і він поміщає їх на сторінку. При цьому передані дані (у прикладі з блогами
▲: Запрошує вміст вказаного ресурсу. Запитаний ресурс може приймати параметри (наприклад, пошукова система може приймати як параметр шуканий рядок). Вони передаються в рядку URI (наприклад: http://www.example.net/resource?param1=value1¶m2=value2). Згідно зі стандартом HTTP, запити типу GET вважаються ідемпотентними — багатократне повторення одного і того ж запиту GET повинне приводити до однакових результатів (за умови, що сам ресурс не змінився за час між запитами). Це дозволяє кешувати відповіді на запити GET.
; PUT: Завантажує вказаний ресурс на сервер.▼
; PATCH: Завантажує певну частину ресурсу на сервер.▼
▲: Аналогічний методу GET, за винятком того, що у відповіді сервера відсутнє тіло. Це корисно для витягання мета-інформації, заданої в заголовках відповіді, без пересилання всього вмісту. Зокрема, [[клієнт]] чи [[проксі]], перевіривши заголовок Last-Modified: (останній час модифікації), таким чином може переконатися, що сторінка на сервері не змінилася від часу попереднього запиту.
; DELETE: Видаляє вказаний ресурс.▼
; TRACE: Повертає отриманий запит так, що [[клієнт]] може побачити, що проміжні [[сервер]]и додають або змінюють в запиті.▼
▲: Передає призначені для користувача дані (наприклад, з HTML-форми) заданому ресурсу. Наприклад, в [[блог]]ах відвідувачі зазвичай можуть вводити свої коментарі до записів в HTML-форму, після чого вони передаються серверу методом POST, і він поміщає їх на сторінку. При цьому передані дані (у прикладі з блогами — текст коментаря) включаються в тіло запиту. На відміну від методу GET, метод POST не вважається ідемпотентним, тобто багатократне повторення одних і тих же запитів POST може повертати різні результати (наприклад, після кожного відправлення коментаря з'являтиметься одна копія цього коментаря).
; CONNECT: Для використання разом з [[проксі-сервер]]ами, які можуть динамічно перемикатися в тунельний режим [[SSL]].▼
▲: Завантажує вказаний ресурс на сервер.
▲: Завантажує певну частину ресурсу на сервер.
▲: Видаляє вказаний ресурс.
▲: Повертає отриманий запит так, що [[клієнт]] може побачити, що проміжні [[сервер]]и додають або змінюють в запиті.
▲: Для використання разом з [[проксі-сервер]]ами, які можуть динамічно перемикатися в тунельний режим [[SSL]].
В основному використовуються методи GET і POST.
Рядок 47 ⟶ 38:
HTTP/‹Версія› ‹Код статусу› ‹Опис статусу›
Найтиповіші статуси:
* 200 OK
* 403 Forbidden
* [[HTTP 404|404 Not Found]]
=== Заголовки ===
Заголовки HTTP
== Приклад HTTP діалогу ==
=== Запит ===
GET /wiki/HTTP HTTP/1.1
Рядок 70 ⟶ 62:
== HTTP/2 ==
У лютому 2015 комітет [[IETF]] ([[Internet Engineering Task Force]]), що займається розвитком протоколів і архітектури Інтернет, надав специфікації HTTP/2.0 статус
Основним завданням створення HTTP/2.0 є підвищення ефективності використання мережевих ресурсів і зниження затримок при з'єднанні і обміні даними між клієнтом і сервером в умовах сучасних реалій, при яких для завантаження сайту потрібно відправити безліч окремих запитів (у середньому близько 100), пов'язаних з отриманням [[CSS]], файлів [[JavaScript]] і картинок. Протокол HTTP/1.1, в силу блокувань при конвеєрній передачі даних і високих накладних витрат на віддачу ресурсів невеликого розміру, не може забезпечити належну ефективність і змушує встановлювати кілька одночасних [[TCP]]-з'єднань до сервера. В основу HTTP/2.0 покладений протокол [[SPDY]], розроблений компанією [[Google]]
Основні особливості ([https://github.com/vlet/http2-explained/blob/master/http2.ru.pdf?raw=true PDF]) HTTP/2.0:
* Застосування бінарного протоколу, що оперує передачею бінарних кадрів. Кожен кадр має заголовок з інформацією про тип, розмір, опції та ідентифікаторі потоку. Кадри з типом DATA використовуються для передачі даних, HEADERS
* Мультиплексування і розпаралелювання потоків в рамках одного TCP-з'єднання. Пакети різних потоків змішуються і, на відміну від конвеєрної передачі HTTP/1.1, не очікують закінчення відправлення запиту. Підтримка ефективної двобічної передачі даних. Можливість мультиплексування при зверненні до різних хостів, що дозволяє додатково прискорити одночасне завантаження веб-контенту з різних сайтів (у SPDY мультиплексування підтримується тільки для одного хоста);
* Можливість установки пріоритетів і залежностей для потоків, що дозволяє виділити найважливіші потоки, які потрібно виконати в першу чергу, а також визначити залежність одного потоку від іншого;
Рядок 84 ⟶ 76:
* Можливість установки шифрованих ([[HTTPS]]) і не шифрованих з'єднань (HTTP). Шифрування здійснюється з використанням TLS 1.2 або новішої версії. Незважаючи на те, що специфікація допускає створення нешифрованих сполучень, розробники [[Firefox]] і [[Chrome]] мають намір забезпечити роботу HTTP/2.0 тільки поверх TLS;
* Підтримка технології Server push для передачі даних від сервера до клієнта (наприклад, коли сервер вважає, що після певного запиту обов'язково будуть затребувані інші дані, він може відправити ці дані не чекаючи фактичного запиту);
* Підтримка HTTP/2.0 на час пропозиції стандарту вже реалізована в браузерах [[Firefox]] 36+, Chrome (потрібна побудова з
==
* RFC 2616 Стандарт HTTP/1.1▼
▲* [[HTTPS]] — захищений шифруванням аналог HTTP.
* [[Веб]]
* [[FTP]]
* [[URL]]
== Примітки ==
{{reflist}}
== Джерела ==
▲* RFC 2616 Стандарт HTTP/1.1
{{URI scheme}}
Рядок 100 ⟶ 95:
[[Категорія:Стандарти W3C]]
[[Категорія:Відкриті формати]]
[[Категорія:Комп'ютерна
|