关闭浏览器&会话session关闭——关系

    但第一次访问一个站点的时候,网站服务器会在响应头内加上Set-Cookie:PHPSESSID=.....(php服务器),或Set-Cookie JSESSIONID=....(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重写,但也只能实现会话cookie。

猜你喜欢

转载自lijackly.iteye.com/blog/805779
今日推荐