1.cookie
cookie是在浏览器端解决的方案,将登陆认证之后的用户信息保存在本地浏览器中,后面每次发起http请求,都自动携带上该信息,就能达到认证用户,保持用户在线的作用。
一般的应用场景:免登陆(remember me)
1.浏览器想服务器发送http请求+用户认证信息
2.服务器认证成功,生成cookie
3.服务器向浏览器发送http响应+set-cookie(服务器返回的响应头set-cookie:用户信息)
4.浏览器提取并存储cookie信息与内存或磁盘(浏览器自动保存用户信息到本地硬盘)
5.浏览器向服务器发送http请求+已认证的cookie(每次请求(相同的域名)时,自动携带cookie:用户信息)
6.服务器解析cookie,获取客户端相关信息
7.服务器向浏览器发送http响应(需要身份认证信息才能访问)
2.session
概念:会话:登录后,注销前且未超时,都属于一次会话
作用:登录时,服务端保存一个用户的会话(session),访问敏感资源的时候,校验是否有session。服务器通过相关算法生成唯一值,作为“通行证”,与敏感资源是映射关系。客户端的后续请求,每次都携带这个“通行证”,进而在服务器端进行验证,达到状态保持的效果。
1.浏览器向服务器发送http请求+用户认证信息
2.服务器认证成功,生成sessio以及sessionid
3.服务器向浏览器发送http响应+set-Cookie
4.浏览器提取并存储sessionid到cookie(内存或硬盘)
5.浏览器向服务器发送http请求+sessionid
6.服务器通过id,获得客户信息,从而达到认证的目的
7.服务器向浏览器发送http响应(需要认证身份信息才能访问)
后端返回通行证,前段请求携带通行证,实现的方式没有限制,一般是:
1.自己写代码(双方约定好数据存取规则即可,但是比较麻烦)
2.cookie(比较简单,浏览器自带的功能)
3.cookie和session的区别
-
cookie以文本形式存储在浏览器中,而session存储在服务端
-
因为每次发起http请求都需要携带有效cookie信息,所以cookie一般都有大小限制,以防增加网络压力,一般不超过4k
-
可以轻松访问cookie值,但无法轻松访问会话值,因此session方案更安全。