以前一直以为cookie就是一直保存在客户端的会话信息,而session是保存在服务器断的会话信息,浏览器关闭以后就会被清除,今天看帖子突然发现大错特错,搜了些帖子以及博客详细看了下,都是讲会话cookie和持久cookie,结果发现session就是cookie
http://rubyeye.iteye.com/blog/196117 这个讲的浅显易懂
引用
当你第一次访问一个网站的时候,网站服务器会在响应头内加上Set-Cookie:PHPSESSID=nj1tvkclp3jh83olcn3191sjq3(php服务器),或Set-Cookie JSESSIONID=nj1tvkclp3jh83olcn3191sjq3(java服务器)信息,此信息是服务器随机生成的,放在服务器内存里,为了标识唯一的客户端用户,内容不会重复,这就是sessionid.
当浏览器得到这个sessionid会将它放在自己的进程内存里,这里不同的浏览器会有所不同,IE进程间不能共享这个sessionid,也就是新开一个IE将不能共享这个sessionid;而Firefox进程间可以共享.然后你继续发请求给这个网站的时候,浏览器就会把这个sessionid放在请求头里发送给该服务器了,这样服务器得到sessionid后再和自己内存里存放的sessionid对比锁定客户端,从而区分不同客户端,完成会话.
可以看出如果用这种方式,当用户在会话的过程中关闭浏览器结束进程,则这个sessionid将消失,如果用户又打开浏览器想继续这次会话的时候,就会因为发送的请求中没有这个sessionid而使服务器无法辨别该把那个session信息给他,注意(这个时候服务器端的sessionid和sessionid所指向的session都还存在,只是没有正确的sessionid和它匹配而占用服务器内存,只有session过期或服务器重启才释放内存).
上面这种方式叫会话cookie,把cookie放在浏览器内存里,只能在这个浏览器的内存范围里完成会话,是一种不长久的方式,为了能长久会话,就出现了持久化cookie,把cookie固化在用户的计算机上,现在的cookie不单单能存放sessionid,还能放用户信息,样式表信息等.
如果用户禁止了所有cookie的使用,那么会话cookie和持久化cookie都不能用了,有个方案也可以解决问题,就是URL重写,这里要说下的就是URL重写只能实现会话cookie的效果,持久会话实现不了.
cookie分析的例子
http://hhlux.iteye.com/blog/334729
分享到:
相关推荐
然而,浏览器直接关闭或因为强制关闭浏览器进程、死机等情况,服务器是无法获取到用户主动退出的请求的,从而导致session无法正常失效,这就给网站安全带来了隐患。为了解决这一问题,本文将介绍几种处理浏览器关闭...
从上述内容可以看出,浏览器关闭后Session失效的原因是因为Session机制采用进程中的cookie来保存sessionid的,当浏览器关闭后进程消失,进程中的cookie消失,那么sessionid也就跟着消失了。因此,如果想使Session在...
尽管如此,实际上很难做到在浏览器关闭时就删除session,因为浏览器关闭并不一定会触发服务器端的关闭session的代码。通常的做法是在客户端页面中使用JavaScript的window.onclose事件来尝试在浏览器关闭时向服务器...
- **用户体验**:虽然关闭浏览器并不一定导致Session消失,但为了避免用户在关闭浏览器后重新打开时仍保留原会话状态,有时会选择在关闭浏览器时清除Session,这需要通过JavaScript或者其他方式实现。 总之,...
Session Cookie不存储在硬盘上,仅存在于内存中,关闭浏览器后即消失;Persistent Cookie则被保存在硬盘上,有设定的过期时间。 - Cookie通常包含键值对,如用户名、登录状态等,用于识别用户身份或记录用户偏好。 ...
只要用户不关闭浏览器,这个session就会一直存在,并且服务器会根据这个唯一的ID来识别用户。当用户再次发送请求时,浏览器会把之前存储的唯一ID发送到服务器,服务器通过这个ID找到对应的session,从而获取之前存储...
4. **销毁Session**:当用户结束会话(如关闭浏览器窗口或超时),Session会被销毁,相关数据也随之消失。 #### Application概述 与Session不同的是,Application的作用范围更广,它不仅限于单个用户的会话周期,...
5. **异常处理**:在Filter中捕获Session相关的异常,如Session突然消失,可能是Session被攻击或用户关闭了浏览器。 6. **安全优化**:对敏感操作进行额外的验证,比如在用户尝试执行高风险操作时检查Session是否...
- 用户注销或手动关闭浏览器,通常Session并不会立即消失,除非程序明确指示删除Session。因为浏览器关闭时不会通知服务器,所以Session通常持续到服务器端的超时时间或被显式销毁。 4. Session的管理: - 服务器...
2. `session.cookie_lifetime`:设置session cookie的生命周期,如果设置为0,表示浏览器关闭时cookie消失,否则以秒计数。 3. `session.save_path`:确认session存储路径是否正确且有足够空间,存储问题可能导致...
会话Cookie在浏览器关闭后消失,而持久化Cookie则可以设定过期时间,即使浏览器关闭,再次打开时依然存在。 Session,另一方面,是在服务器端存储用户状态的一种方式。与Cookie不同,Session数据不会发送到客户端,...
2. **Session Cookie**:不设置过期时间,只存在于当前会话中,浏览器关闭后即消失。例如,上面提到的JSESSIONID,就是一个典型的Session Cookie,存储在浏览器内存中,不会写入硬盘。 3. **Persistent Cookie**:...
2. **生命周期**:如果没有设置有效期(setMaxAge()),Cookie被视为临时Cookie,只存在于内存中,当浏览器关闭时,它们会自动消失。若指定了有效期,则Cookie会在指定的时间后失效,即使浏览器已关闭。 3. **创建*...
1. **生命周期**:如果不设置过期时间(setMaxAge),Cookie 仅存在于当前浏览器会话中,关闭浏览器窗口后消失,称为会话 Cookie。设置过期时间后,Cookie 会被保存在硬盘上,直到超过设定的时间或者用户手动清除。 ...
- **生命周期**: 默认情况下,在浏览器关闭后消失,但可以通过设置过期时间使其长期存在。 ##### 2. Session - **定义**: Session是一种服务器端的会话跟踪技术,它允许服务器为每个用户维护一个特定的状态或数据。...
3. **过期时间**:默认情况下,Cookie仅存在于浏览器会话期间,关闭浏览器即消失。如果指定了过期时间,Cookie将在指定时间后失效。 4. **路径和域**:定义Cookie的适用范围。路径限制了Cookie在哪些URL下可用,而域...
Cookie可以设置过期时间,也可以是临时性的(浏览器关闭后消失)。 四、理解Session机制 Session机制的核心在于Session ID,服务器生成一个唯一ID分配给客户端,客户端通过Cookie返回这个ID。服务器根据ID查找并...
如果没有设置过期时间,Cookie只存在于当前浏览器会话(会话Cookie),关闭浏览器后即消失。如果指定了过期时间,Cookie会被存储在硬盘上,即使关闭浏览器也能在下次访问时继续使用。Cookie的数量和大小受到限制,...
1. **会话Cookie**:若未设置过期时间,Cookie生命周期仅限于当前浏览器会话,关闭浏览器窗口后即消失,不保存在硬盘上。 2. **持久Cookie**:设置过期时间的Cookie会被保存在硬盘上,即使关闭浏览器,只要未超过...
如果不设置过期时间,cookie 的生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie 就消失了。这 种 生 命 期 为 浏 览 会 话 期 的 cookie 被 称 为 会 话 cookie。会话 cookie 一般不保存在硬盘上,而是保存在...