|
@@ -35,11 +35,36 @@ Content-Type: text/html; charset=utf-8
|
|
|
|
|
|
По окончанию обмена данными соединение разрывается, и следующее обращение к серверу происходит с **чистого листа**.
|
|
|
|
|
|
-### Сессия
|
|
|
+### Сессия и Cookie
|
|
|
|
|
|
Под сессией подразумевается определенный контекст, в котором происходит обмен данными между клиентом (браузером) и сервером. В этом контексте хранится определенная информация, касающаяся только конкретного клиента
|
|
|
(например залогиненного пользователя). Как это работает:
|
|
|
-- При создании сессии сервер создает уникальный ключ. Ключ должен быть достаточно большим, что бы его было **крайне** маловероятно подобрать.
|
|
|
+- При создании сессии (например, при удачном логине) сервер создает уникальный ключ. Ключ должен быть достаточно большим, что бы его было **крайне** маловероятно подобрать.
|
|
|
+```
|
|
|
+POST /login/ HTTP/1.1
|
|
|
+Host: example.com
|
|
|
+Accept: text/html
|
|
|
+
|
|
|
+login=user&password=eightasterisks
|
|
|
+```
|
|
|
- Ключ отсылается в браузер в заголовке вместе с ответом. Браузер запоминает его на определенное время для определенного URL
|
|
|
+```
|
|
|
+HTTP/1.1 200 OK
|
|
|
+Content-Type: text/html; charset=utf-8
|
|
|
+Set-Cookie: key=LongAndWeirdRandomSecureCharset
|
|
|
+
|
|
|
+<html>
|
|
|
+<head>...</head>
|
|
|
+<body>...</body>
|
|
|
+</html>
|
|
|
+```
|
|
|
+Обратите внимание на заголовок **Set-Cookie**. Именно он в себе хранит уникальный ключ, который будет запомнен браузером
|
|
|
- Браузер при каждом запросе к серверу отсылает ему этот ключ, подтверждая таким образом, что данное соединение - от конкретного пользователя.
|
|
|
+```
|
|
|
+GET / HTTP/1.1
|
|
|
+Host: example.com
|
|
|
+Accept: text/html
|
|
|
+Cookie: key=LongAndWeirdRandomSecureCharset
|
|
|
|
|
|
+
|
|
|
+```
|