意义
http
协议是无状态协议,cookie
和 session
来实现状态的记录
特征
- 都是由服务器生成,存储键值对
session
存储在服务器,cookie
返回给客户端。响应信息头有set-cookie
字段。一般来说SessionID
会以类似cookie
的方式返回给客户端。SessionID
是服务器用来识别、操作存储session
值的对象的。一般来说session
在服务器端有文件方式、数据库方式等存储方式。SessionID
是用来识别文件或数据库某个记录的。- 客户端在发送请求时会
自动
将存活、可用的cookie
封装在请求头中,字段为Cookie
。不管请求哪个网站,都会带上所有cookie
。 - 都是有期限的。一般来说,
cookie
的生命周期受两个因素影响。(1)cookie
自身的存活时间,这是由服务器生成cookie
时设定的。(2)客户端是否保留了cookie
,并且是否保留只对他自身有影响,对其他封包工具无影响。比如别人抓包抓到了,你关闭了他还是可以激活。;session
的生命周期受两个因素影响。(1)服务器对session
对象的保存的最大时间的设置,一般是默认统一设置好的。(2)客户端进程是否关闭,他是保存到内存中的,进程关了就没了。并且只对他自身有影响,对其他封包工具无影响。
session 比 cookie 安全?
cookie
存储在客户端,是可见的。session
是存在服务器端的,是不可见的
token
有时会将 sessionID
加密后返回给客户端,称之为 token