1、cookie
1)Http协议是无状态的,如果没有cookie,每次登陆后再进行增、删改查操作都要重定向到登陆页面,对用户来说无疑是个麻烦。
2)分类
cookie有两种,一类是随着浏览器打开和关闭,而创建和消失;另一类是指定过期时间(Expires)或有效期(max-age)。
3)创建
客户端发送Http请求后,服务器返回给客户端的响应内容包含 Set-Cookie 首部字段,浏览器把cookie内容保存在浏览器。
HTTP/1.0 200 OK
Content-type: text/html
Set-Cookie: user_id=1
Set-Cookie: user_name=joy
Set-Cookie: role_type=1
下一次浏览器再次发送请求给同一个服务器时,请求头会带上Set-Cookie 里的值发送给服务器。
GET /index.html HTTP/1.1
Host: www.dahuange.com
Cookie: user_id=1; user_name=joy;role_type=1
2、session
与cookie不同的是,服务器发送给浏览器的响应 包含Set-Cookie 首部字段,这个字段包含了 Session ID;客户端再次对同一个服务器进行请求时携带cookie ,服务器从cookie里提取出 Session ID,从 Redis 中取出用户信息,继续后续操作。
3、session与cookie关联
1)session存储在服务器上,cookie存储在浏览器;
2)session 可以存储任何类型的数据,cookie 只能存储 ASCII 码字符串;
3)单个 Cookie 保存的数据不能超过4K,session无限制;
4.补充
今天无意中看到一篇关于session和cookie的文章,讲的浅显易懂,把有些我没理解的的地方都说透了。
之前说到服务器给浏览器返回set-cookie,如果将它的数据加密了,那就不怕其他人篡改数据,这个叫做cookie_based_session。
参考:
https://www.jianshu.com/p/88d936dec517
https://www.jianshu.com/p/dbd92ee7bdff
https://blog.csdn.net/u013568373/article/details/91391127
https://www.jianshu.com/p/fe586a2b4c28
3
网友评论