`

SessionID的本质

 
阅读更多

一、客户端用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。

 

sessionid是保存在客户端的cookie中的,名叫,aspnet_sessionId,如果配置文件禁用了不用cookie来保存的话,sessionid会通过url来传递,如果客户端都禁用了cookie,那就脑残了,每次浏览器都是新的请求了!

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Java关于session的详细解释

    虽然Session和Transaction都涉及到状态的管理,但它们之间存在本质的区别: - **Transaction**:事务,主要用于数据库操作中,确保一系列操作要么全部成功,要么全部失败,保证数据的一致性和完整性。 - **Session*...

    Session cookies

    3. **Session ID的传递**:服务器会在响应中包含Session ID,通常是以cookie的形式。客户端浏览器会自动接收这个cookie,并将其存储起来。 4. **后续请求**:客户端在接下来的每次请求中都会附带上这个Session ID。...

    Asp.net aspx share Session Variable

    4. **共享SessionID**:由于Session数据是通过SessionID关联的,所以关键在于将ASP.NET的SessionID传递给ASP。这可以通过在HTTP头中添加自定义字段或者在URL中编码SessionID来实现。在ASP.NET页面中,你可以获取...

    Session的传递

    之后,每当用户发送请求时,浏览器都会将这个Session ID发送回服务器,服务器根据Session ID找到相应的会话数据。 需要注意的是,Session数据存储在服务器内存中,因此对于大量用户并发访问的情况,可能会占用大量...

    Cookie与Session机制

    Session是另一种会话跟踪技术,它在服务器端存储用户信息,每个用户会话对应一个唯一的Session ID。当用户首次访问时,服务器创建一个Session对象,分配Session ID并通过Cookie返回给客户端。之后,客户端每次请求...

    PHP5 session 详解

    Session 文件的名称格式通常是 `sess_` 加上 Session ID。 **4. Session 生命周期** 从初始化 Session 开始,直到用户关闭浏览器或者 Session 过期这段时间被称为 Session 的生命周期。在这段时间内,用户的状态...

    PHP Session的配置与应用

    虽然Session和Cookie都能实现用户状态跟踪,但它们有本质区别。Cookie数据存储在客户端,可能受到安全威胁;而Session数据存储在服务器,相对安全。Cookie容量有限,一般不超过4KB,而Session容量较大。此外,Cookie...

    单用户登录组件源码

    这里使用Guid写到cookie里,注意把这个cookie设置成httponly的,当然如果你在程序里使用了Session,那么Session.SessionID就可以用来唯一标识一个用户了,Session.SessionId本质是在cookie……

    seesion注意问题

    Session本质上是一个存储结构,通常由服务器端的内存或数据库存储用户会话信息。当客户端(浏览器)访问服务器时,服务器为每个用户创建一个唯一的Session ID,这个ID通过Cookie或者URL重写等方式返回给客户端。...

    jsp的session介绍

    当一个用户访问Web应用时,服务器会创建一个Session对象,并为其分配一个唯一的Session ID。这个ID通常被存储在客户端的Cookie中,或者在URL中隐式传递,使得服务器能够识别和追踪同一个用户的不同请求。 #### ...

    JAVA之cookie与session

    尽管 Cookie 和 Session 都用于跟踪用户状态,但它们有着本质的区别: 1. **存储位置**:Cookie 存储在客户端,而 Session 存储在服务器端。 2. **安全性**:由于 Cookie 存储在客户端,因此容易受到攻击。Session ...

    IFrame中Session丢失的解决办法

    尽管这可能增加网络传输的数据量,但在IFrame环境下,这是必要的,因为没有Cookie,SessionID就无法在主页面与IFrame之间传递。 3. **P3P头的添加:** 对于IE浏览器,需要在服务器端添加P3P头,例如`Response.Add...

    Session详解

    #### Session的本质及其在Web开发中的角色 Session,中文常译为“会话”,在Web开发领域中扮演着至关重要的角色,尤其是在维护客户端与服务器之间的交互状态方面。Session的概念源远流长,但其核心在于“保持状态”...

    session详解

    1. **创建Session**:当用户第一次访问网站时,服务器为该用户创建一个唯一的会话ID,并将其存储在服务器端的一个数据结构中,如内存或数据库。 2. **发送Session ID**:服务器通过HTTP响应头中的`Set-Cookie`字段...

    session机制

    之后的每次请求,客户端都会携带这个session ID,服务器通过这个ID查找并维护用户的状态信息。 #### 五、理解javax.servlet.http.HttpSession 在Java Web开发中,`javax.servlet.http.HttpSession`是一个非常重要...

    深入解析Session工作原理及运行流程

    如果存在就去遍历服务端的session文件,找到与这个sessionid相对应的文件,文件中的键值便是sessionid,值为当前用户的一些信息。以后所有的请求都会交换这个Session ID,进行有状态的会话。 Session与Cookie的区别...

    Cookie机制和Session机制

    - **定义**:Session机制是一种服务器端状态管理技术,服务器为每个用户会话分配一个唯一的会话ID,并在服务器内存中维护该会话的相关数据。 - **工作原理**: - 服务器为每个新会话生成一个会话ID。 - 会话ID通过...

    ASP.NET Session使用详解

    Session实质上是服务器为每个独立的用户会话分配的一个唯一标识符,通常称为SessionID。每当用户首次连接到服务器时,系统会建立一个新的Session,并分配一个唯一的SessionID给用户。这个SessionID对于服务器来说...

    Django中的session用法详解

    - `SESSION_COOKIE_NAME='sessionid'`:指定Cookie的名字,默认为`sessionid`。 - `SESSION_COOKIE_AGE=1209600`:设置Session的有效期(单位:秒),默认为两周。 - `SESSION_EXPIRE_AT_BROWSER_CLOSE=False`:...

    Python爬虫番外篇之Cookie和Session详解

    Cookie和Session都是用于维护用户会话的重要工具,但它们之间存在本质的区别。选择合适的方法取决于具体的应用需求。Cookie适合于简单的情况,而Session则更适合处理复杂和敏感的数据。在实际开发中,理解这些概念并...

Global site tag (gtag.js) - Google Analytics