Cookie
标准的请求头: Cookie:键=值
标准的响应头:Set-Cookie:键=值
作用:
cookie是保存信息用的(客户端本地,和浏览器相关的文件夹)
应用场景:用户免登陆(remember me)
1.输入账号密码,勾选免登陆
2.点击登陆按钮,发送HTTP请求,服务端返回HTTP响应 (Set-Cookie:用户信息)
3.浏览器自动保存,“用户信息”在本地磁盘
以后的每次请求,请求头都携带Cookie:用户信息(即便关掉浏览器,再访问这个url,也会携带)
4.访问登陆页面,服务端发现Cookie:用户信息,直接校验账户密码,通过就跳转到首页
Cookie:有些资源往往需要认证之后才能访问,cookie的作用就是将登录认证之后的用户信息保存在本地浏览器中,后面每次发起http请求,都自动携带上该信息,就能达到认证用户,保持用户在线的作用(勾选免密登录)
Session
概念:会话。对于web系统来说,一个会话,表示登陆后,注销前,且最近一次操作离下一次操作没有超时(规定的会话时间)都是一个会话。
作用:标识登录的有效用户
原理:服务端保存用户信息(登陆时校验账号密码通过,保存用户信息)
访问敏感资源时,通过服务端保存的用户信息,判断是否登录,是否允许访问
Session:即会话(从登录开始,到注销前(且未超时),都属于一次会话)
一旦cookie丢失,用户信息泄漏,容易造成跨网站攻击,因此,将用敏感信息保存在服务端,而服务端生成一个唯一值(一个随机数,作为通行证),将该值保存在客户端浏览器中,随后客户端的后续请求,浏览器都会自动携带该id,进而在服务端认证,达到状态保持效果
区别:
1)cookie以文本文件格式存储在浏览器中,而session存储在服务端
2)每次发起http请求时,都要携带cookie信息,所以,cookie一般都不超过4k,以防止增加网络压力
3)可轻松访问cookie值,但无法轻松访问会话值,因此session方案更安全