我知道Session对象用于每个会话存储数据。我做了以下实验:
那么ASP.NET应用程序如何知道我的第3步请求是一个新的会话呢?
会话是如何定义的?不同的选项卡是否总是属于同一个会话?
ADD 1
尽管会话数据可以在页面A和页面B中显示,但它们中显示的会话ID是不同的。为什么?
Correct
页面A和页面B中的会话ID是相同的。我没有使用InPrivate浏览。
ADD 2
确实有一个用于会话ID的Cookie:
- 打开浏览器并访问一个保存数据到Session对象的aspx页面A。
- 保持浏览器打开,并打开另一个选项卡访问显示会话数据的aspx页面B。它显示的数据与我在步骤1中存储的一样。
- 我关闭浏览器并重新访问页面B,存储的数据消失了。
那么ASP.NET应用程序如何知道我的第3步请求是一个新的会话呢?
会话是如何定义的?不同的选项卡是否总是属于同一个会话?
ADD 1
尽管会话数据可以在页面A和页面B中显示,但它们中显示的会话ID是不同的。为什么?
Correct
页面A和页面B中的会话ID是相同的。我没有使用InPrivate浏览。
ADD 2
确实有一个用于会话ID的Cookie:
ASP.NET_SessionId=lmswljirqdjxdfq3mvmbwroy; path=/; domain=localhost; HttpOnly
当POST请求得到响应时,它被设置。
于是我进行了另一个实验,关闭了浏览器(Fire Fox),预料之中,Cookie不再存在。我手动创建Cookie希望“伪造的Cookie能够恢复旧会话”,但Fiddler显示手动创建的Cookie根本没有被发送。
Fiddler提示:
This request did not send any cookie data.
那么,能否伪造一个cookie并恢复先前的会话?
会话在服务器上存活多长时间?