Где хранится сессия, если cookie отключен на компьютере клиента? Что на самом деле хранится в сессии? - PullRequest
5 голосов
/ 09 сентября 2009

В конфигурационном файле у меня есть следующие настройки

sessionState mode = "InProc" cookieless = "false"

Означает ли это, что sessionid очищен в файлах cookie? Если да, то как это выбирается и отправляется на сервер и как это проверяется через обратные передачи.

Что произойдет, если в моем браузере отключены файлы cookie, будет ли сеанс (идентификатор сеанса и переменные сеанса) по-прежнему создаваться?

Где (путь по умолчанию) файлы cookie создаются и сохраняются по умолчанию для сеансов и могу ли я изменить путь?

Какой формат и тип данных хранятся в файлах cookie для сеанса?

Если я сохраняю объект класса в сеансе, что на самом деле хранится в куки?

Также, если я использую режим аутентификации в качестве форм с файлами cookie, что произойдет, если файлы cookie отключены в браузере?

Ответы [ 9 ]

17 голосов
/ 09 сентября 2009

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

Также возможно включить то, что называется сессиями без печенья, где sessionID встроен в URL, например:

http://yourserver/folder/ (здесь зашифрованный идентификатор сессии) /default.aspx

Вот ссылка на статью MSDN с более подробной информацией: http://msdn.microsoft.com/en-us/library/aa479314.aspx

ПРИМЕЧАНИЕ: возможно , чтобы полностью заблокировать cookie сеанса. Например, в IE8 я просто вошел в Инструменты> Свойства обозревателя> Конфиденциальность. Когда я проворачивал ползунок до «High» или выше, мои сайты так и не прошли через экран входа в систему, потому что cookie-файл сеанса был заблокирован - фактически, Джош Стодола сказал ниже, что в этом случае сеанс никогда не будет даже создан на сервере.

Однако следует понимать, что такой тип поведения эффективно нарушает работу Интернета. Поэтому, если вы не создаете сайт, нацеленный на теоретиков заговора, по моему мнению (и мнению большинства крупнейших сайтов в мире), нет необходимости обслуживать крошечный процент пользователей, которые не играют по обычным правилам .

Для них Интернет просто не будет работать так, как должен.

0 голосов
/ 03 января 2014

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

Session Mode = "InProc" - режим по умолчанию, в котором информация о состоянии сеанса хранится на веб-сервере. Однако, когда вы говорите cookieless = "false", вы говорите, чтобы сохранить уникальный идентификатор в cookie. Этот идентификатор создается при создании сеанса, поэтому во время обратной передачи идентификатор извлекается из файла cookie. Если cookie отключены в браузере, сеанс все равно будет создан, и этот идентификатор передается по URL.

Вы можете просматривать файлы cookie, перейдя в настройки браузера-> Конфиденциальность-> Настройки содержимого-> Все файлы cookie и данные сайта-> Сохраненные с именем сайта Возможно, вы можете найти куки в% userprofile% \ AppData \ Roaming \ Microsoft \ Windows \ Cookies, но они могут отличаться в зависимости от операционной системы.

В файлах cookie вы обычно храните небольшую часть нечувствительной личной информации. Если вам необходимо хранить конфиденциальные данные, такие как имя пользователя и пароль, лучше зашифровать эти данные.

В cookie вы обычно храните информацию о пользователях. Для более подробной информации, пожалуйста, посетите URL http://msdn.microsoft.com/en-us/library/system.web.configuration.sessionstatesection.cookieless(v=vs.110).aspx http://msdn.microsoft.com/en-us/library/ff647070.aspx#pagexplained0002_cookielessforms

0 голосов
/ 14 июня 2012

Хранит прямо в браузере

0 голосов
/ 15 июня 2011

Нет, если куки отключены, сеанс не будет работать.

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

0 голосов
/ 10 сентября 2009

Я не реализовал это лично. Но это должно быть как:

Поскольку Cookiless = false в файле web.config и браузер отключил файлы cookie, при поступлении первого запроса на страницу модуль HTTP проверяет файл cookie для проверки подлинности форм. Теперь будет пусто, что отправит пользователя на страницу входа. Теперь, когда придет второй запрос на любую страницу на сайте, он снова найдет пустой файл cookie для проверки подлинности форм и отправит пользователя на страницу входа. Поэтому для каждого запроса пользователю необходимо создать новый сеанс.

0 голосов
/ 09 сентября 2009

Вместо того, чтобы идентификатор сессии передавался через cookie, он обычно передается в виде строки запроса в URL-адресе или в виде пользовательского HTTP-заголовка. Однако в описанном вами сценарии ваш пользователь никогда не получит сеанс, потому что для cookie-файла установлено значение false.

0 голосов
/ 09 сентября 2009

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

0 голосов
/ 09 сентября 2009

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

0 голосов
/ 09 сентября 2009

Каждый запрос создает новый сеанс

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