美文网首页
浅谈Cookie、Session和Token(Cookie篇)

浅谈Cookie、Session和Token(Cookie篇)

作者: 抠脚焦太郎 | 来源:发表于2019-11-20 18:50 被阅读0次

一、Cookie

一句话来概述,Cookie就是保存在客户端也就是浏览器里的数据缓存

cookie在哪里?

我们可以在我们的浏览器里面轻易的查到。

  • 如按F12后在调试者模式的console里面输入document.cookies 就可以看到。


    console里面的cookie
  • 或者在调试者模式的network里面点击某些请求也可以找到。(如果Network没有数据请按F5刷新。)


    network里面的cookie

cookie有什么用?

找到cookie的办法多种多样,那么为什么需要cookie呢?

首先我们知道http基本上都是无状态的短连接(HTTP1.1支持长连接)。每一次请求对于服务端来说都是新的。那么设想一个电商网站的场景,一个用户想要买一件衣服,那么他需要做三个操作。

  1. 登录
  2. 把衣服加入购物车
  3. 点击下单按钮
    加入购物车请求

那么现在问题来了,当用户做完第一步登录后,第二步中加入购物车我们需要发送一个什么请求呢?
服务端需要知道谁把衣服加到了他自己的购物车,那么至少需要两个参数:1.用户的标识(如用户id) 2.衣服的标识(如商品id)。
但大家都知道其实我们登录之后,再点击购买按钮就可以购买衣服了,不需要再输入一次自己的用户id,因为用户的信息已经在第一步登录的时候就被缓存在浏览器中。那么发送请求的时候从浏览器的cookie里面获取用户id,在组合用户输入的商品id作为请求发给服务端,服务端就能将衣服添加到购物车了。

用户登录之后好像是服务端记住了他,其实是每次浏览器发新请求的时候都把自己放在cookie里面的信息又重新告诉了浏览器一遍
那么现在的问题是浏览器发给服务端的信息服务端就都该相信吗?既然浏览器在本地,那么我可以任意修改里面的数据,我把自己cookie里的用户id改成了Jack马的,那么岂不是可以一直用Jack马的账号给我买东西了?

你可能会说加个验证机制不就ok了,不但把用户名放在cookie里面这次把密码也加到cookie里面去,服务端以后要求你再发请求就必须要发一下密码,让我来判断你是不是本人。这种机制也不是不可以,就是比较繁琐因为你每发一次请求都要带用户名密码过去,且不说安全性的问题,效率上就不太好,那么有没有什么更好的机制呢? 那就是利用Session机制。


下一篇--浅谈Cookie、Session和Token(Session篇)

相关文章

网友评论

      本文标题:浅谈Cookie、Session和Token(Cookie篇)

      本文链接:https://www.haomeiwen.com/subject/jbzoictx.html