如果客户端计算机上禁用了cookie,会话存储在哪里?实际存储在会话中的是什么?

时间:2009-09-09 18:35:41

标签: asp.net session cookies

在配置文件中,我有以下设置

sessionState mode =“InProc”cookieless =“false”

这是否表示会话ID在cookie中被覆盖?如果是,那么如何选择并发送到服务器以及如何在回发中验证。

如果在我的浏览器中禁用了cookie,会话(sessionid和会话变量)是否仍会被创建?

其中(默认路径)是默认为会话创建和存储的cookie,我可以更改路径吗?

会话的Cookie中存储了哪种格式和类型的数据?

如果我在会话中存储一个类对象,那么实际存储在cookie中的是什么?

此外,如果我使用身份验证模式作为带有cookie的表单,那么如果在浏览器中禁用cookie会发生什么?

9 个答案:

答案 0 :(得分:16)

会话cookie是一种特殊的非持久性cookie。它只存储在内存中,所以在大多数情况下即使禁用cookie也能正常工作。

还可以启用名为cookieless sesssions的东西,其中sessionID嵌入在URL中,如下所示:

http://yourserver/folder/(此处加密的会话ID)/default.aspx

以下是MSDN文章的链接,其中包含更多详细信息:http://msdn.microsoft.com/en-us/library/aa479314.aspx

注意: 可以完全阻止会话cookie。例如,在IE8中,我刚进入工具>互联网选项>隐私。当我将滑块调高到“高”或更高时,我的网站从未通过登录屏幕,因为会话cookie被阻止 - 实际上,Josh Stodola在下面说过,在这种情况下甚至不会在服务器上创建会话。

但是,要了解这种行为有效地打破了互联网。因此,除非你建立一个针对阴谋理论家的网站,在我看来(以及世界上大多数最大网站的意见),没有必要迎合那些不按正常规则玩的用户的百分比

对于他们来说,互联网不会按照预期的方式运作。

答案 1 :(得分:0)

我的猜测是客户端的每个请求都将被服务器视为新会话。

答案 2 :(得分:0)

如果您碰巧从浏览器中获取请求标头,则可以看到SessionID是标头的一部分。服务器使用它来确定哪个会话属于哪个用户。

答案 3 :(得分:0)

它不是通过cookie传递会话ID,而是通常作为URL中的查询字符串传递,或者作为自定义HTTP标头传递。但是,根据您描述的方案,您的用户将永远不会获得会话,因为您将cookieless设置为false。

答案 4 :(得分:0)

我个人没有实现这个。但它应该是:

由于web.config文件中的Cookiless = false且浏览器已禁用cookie,因此当第一次请求页面时,HTTP模块将检查表单身份验证cookie。现在它将为空,将用户发送到登录页面。现在,当第二次请求网站上的任何页面时,它将再次找到表单身份验证cookie为空并将用户发送到登录页面。因此,对于每个请求,用户都需要创建新会话。

答案 5 :(得分:0)

不,如果禁用cookie,会话将无效。

如果你想在禁用cookie时使用会话,那么你可以通过URL传递会话。

答案 6 :(得分:0)

它直接存储在浏览器中

答案 7 :(得分:0)

会话状态有两种方式可以存储将客户端与服务器会话相关联的唯一ID;通过在客户端上存储HTTP cookie或通过在URL中编码会话ID。

会话模式=“InProc”是一种默认模式,用于将会话状态信息存储在Web服务器中。但是当你说cookieless =“false”时,你说要在cookie中存储唯一ID。创建会话时会创建此Id,因此在回发期间会从cookie中获取ID。如果在浏览器中禁用了cookie,则仍会创建“是”会话,并且此ID将通过URL传递。

您可以通过浏览器设置浏览到Cookie - >隐私 - >内容设置 - >所有Cookie和网站数据 - >以网站名称存储 您可能会在%userprofile%\ AppData \ Roaming \ Microsoft \ Windows \ Cookies中找到cookie但可能因操作系统而异。

在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

答案 8 :(得分:-5)

每个请求都会创建新会话