我们都是阴沟里的虫子,但总还是得有人仰望星空。 ——刘慈欣《三体》
工作原理
Cookie
- 浏览器第一次发送请求到服务端
- 服务端创建Cookie(包含用户信息),然后向浏览器发送Set-Cookie头
- 在该Cookie到期之前,浏览器访问该域下的所有界面,都会携带这个Cookie
- 服务端通过Cookie上不同的数据,区分不同的用户
Session
- 浏览器第一次发送请求到服务端
- 服务端创建Session,同时会创建一个特殊的Cookie(name为X,value为session对象的ID),将Cookie发送给浏览器
- 浏览器再次访问服务端,会携带这个Cookie
- 服务端根据Cookie的name和value,去查询对应的Session,从而分辨不同用户,此过程有3种情况:
- name为X的Cookie不存在(可能是关闭或更换过浏览器),返回第一步
- name合法,但不存在id为value的session(session默认存活30min),返回第一步
- name合法,value也合法,成功判断出用户身份
区别
- cookie保存在浏览器,session保存在服务器
- cookie保存在本地,session_cookie保存在浏览器进程的内存空间中
- cookie的有效期可以在生成的时候设置,session的有效期取决于服务器,session_cookie在浏览器进程的生命周期内都是有效的
- session比cookie相对来说更安全,但session会占用服务器宝贵的资源
So:把登录信息等重要信息存放为SESSION,其他信息如需保留,可以存放在COOKIE