HTTP має файли cookie HTTP. Файли cookie дозволяють серверу відстежувати стан користувача, кількість підключень, останнє з'єднання тощо.
HTTP має стійкі з’єднання (Keep-Alive), де з одного і того ж TCP-з'єднання можна надіслати кілька запитів.
HTTP має файли cookie HTTP. Файли cookie дозволяють серверу відстежувати стан користувача, кількість підключень, останнє з'єднання тощо.
HTTP має стійкі з’єднання (Keep-Alive), де з одного і того ж TCP-з'єднання можна надіслати кілька запитів.
Відповіді:
Незважаючи на те, що декілька запитів можна надсилати через одне і те ж HTTP-з'єднання, сервер не надає особливого значення їх надходженню через один і той же сокет. Це виключно продуктивність, покликана мінімізувати час / пропускну здатність, які в іншому випадку будуть витрачені на встановлення з'єднання для кожного запиту.
Що стосується HTTP, вони все ще є окремими запитами і повинні містити достатньо інформації, щоб самостійно виконати запит. У цьому суть "безгромадянства". Запити не будуть пов’язані один з одним, якщо немає спільної інформації, про яку знає сервер, яка в більшості випадків є ідентифікатором сеансу у файлі cookie.
З Вікіпедії :
HTTP - це протокол без стану. Протокол без стану не вимагає, щоб сервер зберігав інформацію або статус про кожного користувача протягом тривалості декількох запитів.
Але деяким веб-додаткам, можливо, доведеться відстежувати хід користувача від сторінки до сторінки, наприклад, коли для налаштування вмісту веб-сторінки для користувача потрібен веб-сервер. Рішення для цих випадків включають:
- використання файлів cookie HTTP.
- сеанси на стороні сервера,
- приховані змінні (коли поточна сторінка містить форму) та
- Перезапис URL-адрес з використанням кодованих URI параметрів, наприклад, /index.php?session_id=some_unique_session_code.
Що робить протокол без стану, це те, що сервер не вимагає відстежувати стан за кількома запитами, а не те, що він цього не може зробити, якщо цього хоче. Це спрощує контракт між клієнтом і сервером, і у багатьох випадках (наприклад, подання статичних даних через CDN) мінімізує кількість даних, які потрібно передавати. Якби сервери вимагали підтримувати стан відвідувань клієнтів, структура видачі та відповіді на запити була б складнішою. Так і є, простота моделі - одна з її найбільших особливостей.
Оскільки протокол без стану не вимагає, щоб сервер зберігав інформацію про сеанс або статус про кожного партнера по комунікації протягом тривалості декількох запитів.
HTTP - це протокол без стану, який означає, що зв’язок між браузером та сервером втрачається після завершення транзакції.
HTTP називається як, stateless protocol
оскільки кожен запит виконується незалежно, без будь-якого знання запитів, які були виконані перед ним, а це означає, що після завершення транзакції зв’язок між браузером і сервером також втрачається.
Протокол stateless
полягає в тому, що HTTP у своєму оригінальному дизайні порівняно простий file transfer protocol
:
Не було підтримувано жодного зв'язку між одним і іншим з'єднанням, навіть від одного і того ж клієнта. Це спрощує контракт між клієнтом і сервером і в багатьох випадках мінімізує кількість даних, які потрібно передати.
Якщо протокол HTTP надається як повний протокол State, вікно браузера використовує єдине з'єднання для спілкування з веб-сервером для декількох запитів, наданих веб-додаткам. Це дає можливість вікні браузера тривалий час залучати з'єднання між вікном браузера та веб-серверами та зберігати вони тривалий час знаходяться в режимі очікування. Це може створити ситуацію досягнення максимального з'єднання веб-сервера, навіть якщо більшість з'єднань у клієнтах не працюють.
HTTP - це без зв'язку, і це прямий результат, що HTTP є протоколом без стану. Сервер та клієнт знають один про одного лише під час поточного запиту. Згодом вони обоє забувають один про одного. Через таку природу протоколу ні клієнт, ні браузер не можуть зберігати інформацію між різними запитами на веб-сторінках.
Що без громадянства ??
Після того, як запит буде зроблений і відповідь буде повернута клієнту, з'єднання буде припинено або припинено. Сервер забуде все про запитувач.
Чому без громадянства ??
В Інтернеті вибрано протокол без громадянства. Це був геніальний вибір, оскільки первісна мета Інтернету полягала в тому, щоб дозволити подання документів (веб-сторінок) надзвичайно великим. людей, які використовують дуже базове обладнання для сервера.
Підтримка тривалого зв'язку була б надзвичайно трудомісткою.
Якби в Інтернеті було обрано протокол стану, навантаження на сервер було б збільшено для підтримки зв'язку відвідувача.
HTTP
є без громадянства. TCP
є державним. Немає так званих HTTP connection
, а лише HTTP request
і HTTP response
. Нам не потрібно нічого підтримувати, щоб зробити інше HTTP request
. Заголовок підключення, який є "збереженим в житті", означає TCP
, що подальше HTTP
запити та відповіді будуть повторно використані , замість того, щоб постійно відключати та відновлювати TCP
з'єднання.
Я думаю, що хтось обрав дуже невдалу назву для концепції STATELESS, і саме тому спричинено ціле непорозуміння. Йдеться не про зберігання будь-яких ресурсів, а про взаємини між клієнтом та сервером.
Клієнт: Я зберігаю всі ресурси на своїй стороні і надсилаю вам "список" усіх важливих елементів, які потрібно обробити. Робіть свою роботу.
Сервер: Добре. Дозвольте мені взяти на себе відповідальність за фільтрацію того, що важливо, щоб дати вам належну відповідь.
Що означає, що сервер є "рабом" клієнта і повинен забувати про свого "господаря" після кожного запиту. Власне, STATELESS посилається лише на стан сервера.
https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm#sec_5_1_3