Всегда ли HTTP-сессия требует Cookie? - PullRequest
1 голос
/ 03 марта 2010

Наверное, да, но я не уверен.

Обе аутентифицированные сессии и анонимные сессии будут ссылаться на сохраненные сессии через cookie.

########### изменить: уточнить

Кажется, что сеансы требуют некоторого способа ссылки на сохраненные данные сеанса.
Эта ссылка может быть сохранена в файле cookie ИЛИ добавлена ​​в качестве параметра в URL.

Ответы [ 6 ]

4 голосов
/ 03 марта 2010

Я знаю, что это воспринимает вас слишком буквально, но было бы уместно указать, что HTTP не имеет состояния и поэтому не имеет сеансов. Чтобы поддерживать состояние, браузер или сервер должны сохранять информацию о состоянии между запросами. Традиционно сервер поддерживает состояние, и по соглашению это называется сеансом, но это не имеет ничего общего с HTTP, поскольку это обходной путь. Кроме того, сессия обычно имеет очень специфическую коннотацию, а именно то, что это индивидуальное посещение сайта, срок которого истекает, когда он больше не используется (некоторый период бездействия). Это также будет отличаться для одного и того же пользователя, использующего разные компьютеры или браузеры.

Чтобы выполнить сеанс сервера, сервер обычно выделяет некоторую информацию в памяти или базе данных для отслеживания состояния и использует часть идентифицирующей информации, чтобы связать запросы http с этим состоянием. Обычно это токен. Браузер должен включать информацию, идентифицирующую сеанс, в каждый http-запрос. Неважно, как это происходит, если сервер и браузер согласны. Это чаще всего cookie или параметр url в качестве запасного варианта, но если вы правильно настроили код, он также может быть частью самого url, частью тела POST или даже нестандартным заголовком http.

Альтернатива, которая становится все более популярной, заключается в поддержании состояния в браузере и использовании чисто ajax-вызовов к серверу. В этом сценарии серверу не нужно поддерживать какую-либо концепцию сеанса, и он просто возвращает данные, которые запрашиваются, полностью независимым от пользователя способом. Может потребоваться некоторая аутентификация, если данные являются частными, но токен сеанса - нет, и на сервере не сохраняется состояние.

1 голос
/ 03 марта 2010

Когда вы используете SSL / TLS, теоретически вы можете использовать идентификатор сеанса SSL для ссылки на какое-либо состояние на сервере.

1 голос
/ 03 марта 2010

вы можете в значительной степени уникально идентифицировать людей по их плагинам браузера, шрифтам и т. Д.

https://panopticlick.eff.org/

1 голос
/ 03 марта 2010

Также существует HTTP-аутентификация , которая сегодня не так часто используется, поскольку браузер должен отправлять имя пользователя и пароль на сервер в незашифрованном виде при каждом запросе.HTTP-Auth просто помещает имя пользователя и пароль в заголовок, отправленный вашим браузером.

1 голос
/ 03 марта 2010

Не обязательно, некоторые сайты используют значение идентификатора сеанса, присутствующее в URL, который представляет сеанс, и это значение добавляется ко всем ссылкам, которые посетил пользователь.

Мы должны использовать его таким образом на работе, так как часто мобильные браузеры не принимают куки, и это единственный способ запомнить сеанс.

1 голос
/ 03 марта 2010

Вы можете передать идентификатор сеанса в качестве параметра запроса (www.blah.com/index.php?SESSIONID=fADSF124323). Но это должно быть на каждой странице. PHP имеет опцию , чтобы включить это прозрачно. Это огромный беспорядок. Вот почему куки предпочтительнее.

...