Session和Cookie不能不说的秘密
保持会话的技术
既然我们都知道HTTP是无状态的协议,那么我们需要保持用户会话的话有什么技术方案弥补呢?
其实主要的方法有三种
- cookie。把会话信息保存在客户端cookie上(不安全)
- Session。把会话信息保存在服务端上,客户端保存会话的ID
- GET/POST。通过参数形式保存会话信息或会话ID。
Cookie
cookie是保存在浏览器终端内存或磁盘上的一小块数据,只能保存字符串类型,所有的cookie信息都会随着浏览器的请求而发送。cookie分为:持久cookie,数据保存在磁盘中;会话cookie,数据保存在内存中,浏览器关闭后将清楚。尽管几乎所有浏览器都支持cookie,但是浏览器对单域下cookie的个数和每个key的长度都有限制。
Session
服务器端的机制,服务器使用一种类似散列表的结构来保存信息,客户端需要接收保存和回送session的会话ID,session通常是借助客户端的cookie来储存session会话ID。如果客户端cookie被禁用,建议的方案就是以参数形式加到请求中来保持会话。