HTML - Cookie & Session

 

基础概念:

会话: 一系列动作的起止 (如:打开浏览器到关闭浏览器)

 

HTTP协议本身是无状态的, 意味着不能记录或存储有关操作的历史数据

Cookie 解决 http 本身无状态的问题, 将数据保存在客户端

Session 建立客户端和服务端的状态保持, 信息保存在服务端, 标志利用 Cookie 保存在客户端

 

Cookie

通过扩展 http 协议来分发 :  在 http 响应头中添加一行特殊的指令用来提示浏览器生成 Cookie

组成 : 名字, 值, 过期时间, 路径, 域

 

会话Cookie: 以浏览器会话期为生命期的Cookie

 

Cookie一般是存在内存中,会随着浏览器的关闭而消失作用(会话Cookie)

但是设置了过期时间的Cookie一般不会随着浏览器的关闭而关闭, 它将Cookie保存在了硬盘里. 

 

Session

通过服务端创建散列表的形式来保存数据, 在客户端(通常是利用 Cookie)保存查找数据的凭证(SessionID) (客户端Cookie一般保存的形式为 [SESSIONID=xxxxxxxxxxxxxxxxxxxx])

服务端首先接受客户端的请求, 并检查请求中是否含有 SessionID.

如果客户端的请求中含有 SessionID, 并且已经存在于服务端的, 则可以直接检索数据使用

如果客户端的请求中含有 SessionID, 但是并未在服务端存储的, 则服务端新建一个 Session

如果客户端的请求中不含有 SessionID, 则服务端新建一个 Session 和 SessionID 并且把 SessionID 返回给客户端.

 

如果客户端的cookie被禁止, 则通过重写URL的方式记录数据  html?SESSIONID=xxxxxxxxxxxxxxxxx

 

Session持久化:

Session 一般不会因为浏览器的关闭而被删除.

这是因为 Session 保存在服务端, 而服务端是没办法知道客户端的浏览器被关闭.

而一般造成关闭浏览器丢失Session的原因是. 客户端的(保存着SESSIONID的)Cookie随着浏览器的关闭而消失. 导致无法检索出数据.

所以为了预防Session一直存在, 设置Session失效时间机制.

 

Session保存的方式, 可以保存在内存(进程), 硬盘, 数据库中.

posted @ 2016-02-24 13:52  `Laimic  阅读(221)  评论(0)    收藏  举报