一、客户端用cookie保存了sessionID
客户端用cookie保存了sessionID,当我们请求服务器的时候,会把这个sessionID一起发给服务器,服务器会到内存中搜索对应的sessionID,如果找到了对应的 sessionID,说明我们处于登录状态,有相应的权限;如果没有找到对应的sessionID,这说明:要么是我们把浏览器关掉了(后面会说明为什 么),要么session超时了(没有请求服务器超过20分钟),session被服务器清除了,则服务器会给你分配一个新的sessionID。你得重 新登录并把这个新的sessionID保存在cookie中。
在没有把浏览器关掉的时候(这个时候假如已经把sessionID保存在cookie中了)这个sessionID会一直保存在浏览器中,每次请求的时候都会把这个sessionID提交到服务器,所以服务器认为我们是登录的;当然,如果太长时间没有请求服务器,服务器会认为我们已经所以把浏览器关掉了,这个时候服务器会把该sessionID从内存中清除掉,这个时候如果我们再去请求服务器,sessionID已经不存在了,所以服务器并没有在内存中找到对应的 sessionID,所以会再产生一个新的sessionID,这个时候一般我们又要再登录一次。
二、客户端没有用cookie保存sessionID
这 个时候如果我们请求服务器,因为没有提交sessionID上来,服务器会认为你是一个全新的请求,服务器会给你分配一个新的sessionID,这就是 为什么我们每次打开一个新的浏览器的时候(无论之前我们有没有登录过)都会产生一个新的sessionID(或者是会让我们重新登录)。
当我们一旦把浏览器关掉后,再打开浏览器再请求该页面,它会让我们登录,这是为什么?我们明明已经登录了,而且还没有超时,sessionID肯定还在服 务器上的,为什么现在我们又要再一次登录呢?这是因为我们关掉浏览再请求的时候,我们提交的信息没有把刚才的sessionID一起提交到服务器,所以服 务器不知道我们是同一个人,所以这时服务器又为我们分配一个新的sessionID,打个比方:浏览器就好像一个要去银行开户的人,而服务器就好比银行, 这个要去银行开户的人这个时候显然没有帐号(sessionID),所以到银行后,银行工作人员问有没有帐号,他说没有,这个时候银行就会为他开通一个帐 号。所以可以这么说,每次打开一个新的浏览器去请求的一个页面的时候,服务器都会认为,这是一个新的请求,他为你分配一个新的sessionID。
分享到:
相关推荐
虽然Session和Transaction都涉及到状态的管理,但它们之间存在本质的区别: - **Transaction**:事务,主要用于数据库操作中,确保一系列操作要么全部成功,要么全部失败,保证数据的一致性和完整性。 - **Session*...
3. **Session ID的传递**:服务器会在响应中包含Session ID,通常是以cookie的形式。客户端浏览器会自动接收这个cookie,并将其存储起来。 4. **后续请求**:客户端在接下来的每次请求中都会附带上这个Session ID。...
4. **共享SessionID**:由于Session数据是通过SessionID关联的,所以关键在于将ASP.NET的SessionID传递给ASP。这可以通过在HTTP头中添加自定义字段或者在URL中编码SessionID来实现。在ASP.NET页面中,你可以获取...
之后,每当用户发送请求时,浏览器都会将这个Session ID发送回服务器,服务器根据Session ID找到相应的会话数据。 需要注意的是,Session数据存储在服务器内存中,因此对于大量用户并发访问的情况,可能会占用大量...
Session是另一种会话跟踪技术,它在服务器端存储用户信息,每个用户会话对应一个唯一的Session ID。当用户首次访问时,服务器创建一个Session对象,分配Session ID并通过Cookie返回给客户端。之后,客户端每次请求...
Session 文件的名称格式通常是 `sess_` 加上 Session ID。 **4. Session 生命周期** 从初始化 Session 开始,直到用户关闭浏览器或者 Session 过期这段时间被称为 Session 的生命周期。在这段时间内,用户的状态...
虽然Session和Cookie都能实现用户状态跟踪,但它们有本质区别。Cookie数据存储在客户端,可能受到安全威胁;而Session数据存储在服务器,相对安全。Cookie容量有限,一般不超过4KB,而Session容量较大。此外,Cookie...
这里使用Guid写到cookie里,注意把这个cookie设置成httponly的,当然如果你在程序里使用了Session,那么Session.SessionID就可以用来唯一标识一个用户了,Session.SessionId本质是在cookie……
Session本质上是一个存储结构,通常由服务器端的内存或数据库存储用户会话信息。当客户端(浏览器)访问服务器时,服务器为每个用户创建一个唯一的Session ID,这个ID通过Cookie或者URL重写等方式返回给客户端。...
当一个用户访问Web应用时,服务器会创建一个Session对象,并为其分配一个唯一的Session ID。这个ID通常被存储在客户端的Cookie中,或者在URL中隐式传递,使得服务器能够识别和追踪同一个用户的不同请求。 #### ...
尽管 Cookie 和 Session 都用于跟踪用户状态,但它们有着本质的区别: 1. **存储位置**:Cookie 存储在客户端,而 Session 存储在服务器端。 2. **安全性**:由于 Cookie 存储在客户端,因此容易受到攻击。Session ...
尽管这可能增加网络传输的数据量,但在IFrame环境下,这是必要的,因为没有Cookie,SessionID就无法在主页面与IFrame之间传递。 3. **P3P头的添加:** 对于IE浏览器,需要在服务器端添加P3P头,例如`Response.Add...
#### Session的本质及其在Web开发中的角色 Session,中文常译为“会话”,在Web开发领域中扮演着至关重要的角色,尤其是在维护客户端与服务器之间的交互状态方面。Session的概念源远流长,但其核心在于“保持状态”...
1. **创建Session**:当用户第一次访问网站时,服务器为该用户创建一个唯一的会话ID,并将其存储在服务器端的一个数据结构中,如内存或数据库。 2. **发送Session ID**:服务器通过HTTP响应头中的`Set-Cookie`字段...
之后的每次请求,客户端都会携带这个session ID,服务器通过这个ID查找并维护用户的状态信息。 #### 五、理解javax.servlet.http.HttpSession 在Java Web开发中,`javax.servlet.http.HttpSession`是一个非常重要...
如果存在就去遍历服务端的session文件,找到与这个sessionid相对应的文件,文件中的键值便是sessionid,值为当前用户的一些信息。以后所有的请求都会交换这个Session ID,进行有状态的会话。 Session与Cookie的区别...
- **定义**:Session机制是一种服务器端状态管理技术,服务器为每个用户会话分配一个唯一的会话ID,并在服务器内存中维护该会话的相关数据。 - **工作原理**: - 服务器为每个新会话生成一个会话ID。 - 会话ID通过...
Session实质上是服务器为每个独立的用户会话分配的一个唯一标识符,通常称为SessionID。每当用户首次连接到服务器时,系统会建立一个新的Session,并分配一个唯一的SessionID给用户。这个SessionID对于服务器来说...
- `SESSION_COOKIE_NAME='sessionid'`:指定Cookie的名字,默认为`sessionid`。 - `SESSION_COOKIE_AGE=1209600`:设置Session的有效期(单位:秒),默认为两周。 - `SESSION_EXPIRE_AT_BROWSER_CLOSE=False`:...
Cookie和Session都是用于维护用户会话的重要工具,但它们之间存在本质的区别。选择合适的方法取决于具体的应用需求。Cookie适合于简单的情况,而Session则更适合处理复杂和敏感的数据。在实际开发中,理解这些概念并...