在配置文件中,我有以下设置
sessionState mode =“InProc”cookieless =“false”
这是否表示会话ID在cookie中被覆盖?如果是,那么如何选择并发送到服务器以及如何在回发中验证。
如果在我的浏览器中禁用了cookie,会话(sessionid和会话变量)是否仍会被创建?
其中(默认路径)是默认为会话创建和存储的cookie,我可以更改路径吗?
会话的Cookie中存储了哪种格式和类型的数据?
如果我在会话中存储一个类对象,那么实际存储在cookie中的是什么?
此外,如果我使用身份验证模式作为带有cookie的表单,那么如果在浏览器中禁用cookie会发生什么?
答案 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)
每个请求都会创建新会话