Различия между куки и сессиями? - PullRequest
147 голосов
/ 11 декабря 2008

Я занимаюсь веб-разработкой и узнаю о JSP & Сервлетах . У меня есть некоторые знания о HttpSession - я использовал их в некоторых моих типовых проектах.

В браузерах я видел опцию «удалить куки». Если я удаляю куки, он также удаляет HttpSession.

Являются ли куки и сессия одинаковыми? Каковы различия между ними?

Ответы [ 9 ]

295 голосов
/ 11 декабря 2008

Cookie - это просто короткая текстовая строка, которая отправляется между клиентом и сервером. Вы можете сохранить name=bob; password=asdfas в файле cookie и отправить его туда и обратно, чтобы идентифицировать клиента на стороне сервера. Вы могли бы думать об этом как о продолжении обмена с кассиром банка, который не имеет краткосрочной памяти и нуждается в вашей идентификации для каждой транзакции. Конечно, использование cookie для хранения такой информации ужасно небезопасно. Размер файлов cookie также ограничен.

Теперь, когда кассир банка узнает о своей проблеме с памятью, он может записать вашу информацию на листе бумаги и назначить вам короткий идентификационный номер. Затем вместо того, чтобы указывать номер вашей учетной записи и водительские права для каждой транзакции, вы можете просто сказать «Я клиент 12»

Перевод этого на веб-серверы: сервер сохранит соответствующую информацию в объекте сеанса и создаст идентификатор сеанса, который он отправит обратно клиенту в файле cookie. Когда клиент отправляет обратно cookie, сервер может просто найти объект сеанса, используя идентификатор. Таким образом, если вы удалите куки, сеанс будет потерян.

Еще одна альтернатива для сервера - использовать перезапись URL для обмена идентификатором сеанса.

Предположим, у вас есть ссылка - www.myserver.com/myApp.jsp Вы можете пройти по странице и переписать каждый URL как www.myserver.com/myApp.jsp?sessionID=asdf или даже www.myserver.com/asdf/myApp.jsp и таким образом обменять идентификатор. Этот метод обрабатывается контейнером веб-приложения и обычно включается настройкой конфигурации на использование сеансов без файлов cookie.

176 голосов
/ 11 декабря 2008

Сеансы - это файлы на стороне сервера, которые содержат информацию о пользователе, в то время как файлы cookie являются файлами на стороне клиента, которые содержат информацию о пользователе. Сессии имеют уникальный идентификатор, который сопоставляет их с конкретными пользователями. Этот идентификатор может быть передан в URL или сохранен в файле cookie сеанса.

Большинство современных сайтов используют второй подход, сохраняя идентификатор в cookie-файле, а не передавая его в URL-адресе (что создает угрозу безопасности). Вероятно, вы используете этот подход, не зная его, и, удаляя файлы cookie, вы эффективно стираете их соответствующие сеансы, удаляя уникальный идентификатор сеанса, содержащийся в файлах cookie.

4 голосов
/ 05 сентября 2013

Файлы cookie и сеансы хранят информацию о пользователе (чтобы сделать HTTP-запрос с состоянием), но разница в том, что файлы cookie хранят информацию на стороне клиента (браузер), а сеансы хранят информацию на стороне сервера. Файл cookie ограничен в том смысле, что он хранит информацию об ограниченных пользователях и хранит только ограниченный контент для каждого пользователя. Сессия не ограничена таким образом.

1 голос
/ 08 апреля 2015

Cookie - это глобальный массив, доступ к которому осуществляется через веб-браузеры. Много раз используется для отправки / получения значений. он действует как механизм хранения для доступа к значениям между формами. Файлы cookie могут быть отключены браузером, который добавляет ограничение на их использование по сравнению с сеансом.

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

0 голосов
/ 14 марта 2019

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

enter image description here

Это также хорошая ссылка на эту тему, https://web.stanford.edu/~ouster/cgi-bin/cs142-fall10/lecture.php?topic=cookie

0 голосов
/ 03 июля 2015

Cookie - это способ реализации сеанса между клиентом и сервером, таким образом информация о сеансе сохраняется в cookie. Но это не единственный способ хранения информации о сеансе, другой способ - сохранить информацию о сеансе в URL.

0 голосов
/ 01 апреля 2015

Файлы cookie хранятся в браузере в виде текстового файла. Это ограниченный объем данных. Разрешается только 4 КБ [4096 байт] . печенье с тем же именем

мы можем легко получить доступ к значениям cookie. Так что это менее безопасно . Функция setcookie () должна появиться ДО *

<html> 

бирка.

Сеансы хранятся на стороне сервера. Он хранит неограниченное количество данных. Он содержит несколько переменных в сеансах. мы не можем легко получить доступ к значениям файлов cookie. Так что это более безопасно .

Ссылки: разница между файлами cookie и сессиями

0 голосов
/ 12 февраля 2015

сессия в Asp.net:

1. Сохраняет данные по всему приложению.

2. Содержит данные, если текущий сеанс жив. Если нам нужны некоторые данные, доступные из нескольких контроллеров, и сеанс является способом хранения и получения данных.

3.Сессии - это файлы на стороне сервера, которые содержат информацию о пользователе. [Сессии являются уникальным идентификатором, который сопоставляет их с конкретными пользователями]

Перевод этого на веб-серверы: сервер сохранит соответствующую информацию в объекте сеанса и создаст идентификатор сеанса, который он отправит обратно клиенту в файле cookie. Когда клиент отправляет обратно cookie, сервер может просто найти объект сеанса, используя идентификатор. Таким образом, если вы удалите куки, сеанс будет потерян.

0 голосов
/ 11 декабря 2008

Google JSESSIONID . Это объяснит, как Servlet API изначально использует перезапись URL, а затем, если куки включены, куки для управления сессиями.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...