cookie 可以传json吗_【前端面试】用一个例子帮你理解 session 和 cookie

举例,你在京东上购物,此时你并没有登录,但是你选了一些物品并添加到购物车。

465a2f5ab93ab2b6b7825a77e5d9ece9.png

那么当你添加某件商品到购物车的时候,你这个时候一定会往京东的服务器发送 http 请求。比方说,你的请求报文里有一个 json 对象

{
 "book":"1",
 "ball":"1",
 "bike":"1"
}

当服务器收到这个 http 请求的时候,它建立了一个 session,并反序列化请求中的 json,存储到了 session 里面,并为这个 session 起了一个 id,比如说是 sid10001

服务器会 respond 客户端,并且在应答报文的 header 里标注

set-cookie = connect.sid
//sid = 'sid10001'

客户端接收到 connect.sid 以后,它会把这个 sid 记录到本地的 cookie 里面。注意,cookie 的存储位置是在硬盘而不是内存。

用户此时关闭浏览器并再次打开,访问 jd.com,此时它会把 cookie 中的 connect.sid 拿出来并放在请求报文的 header 里面。

服务器接收到请求报文 header 里面的 session id,得到值 sid10001, 再与服务器中的 session 比对,直至找到 sid10001 对应的 session。取出数据

{
"book":"1",
"ball":"1",
"bike":"1"
}

放在应答报文的 body 中,返回给客户端。

此时,客户端浏览器上,用户依然可以看到购物车里面添加的这三件产品。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值