最近在YouTube上面,看到了关于cookies的一个视频,觉得例子举得不错,于是就来献献丑(全英文,听着听着就懵逼了,这到底在说啥呢!!) 例子就是我们日常生活中非常熟悉的星巴克喝咖啡
大意如下(简单粗暴的翻译,见谅):
我喜欢咖啡,或者你也喜欢咖啡。 我平均每两个星期去一次星巴克:查看菜单、选择咖啡、拿到咖啡、付钱。
如果我三天之后再去星巴克,店员不知道我是谁,也不知道我什么时候来过这里,点过什么咖啡。仍然是按照上面的流程喝咖啡。
这种情况下,我和星巴克之间是无状态的。
现在,如何设计一个系统,能够让星巴克和我之间有状态的?
也就是星巴克能够记得我上一次来喝咖啡是什么什么时候?
能让星巴克记住我最喜欢喝的10种咖啡饮品?
那就是星巴克会员卡。这种会员卡就像我们的session和cookies.
星巴克的会员卡有两个作用: 1、对于星巴克来说,这是你这个用户的身份ID。
你进入星巴克店后,通过这张卡,星巴克知道你上一次来来店里的时间,知道你最喜欢喝的10种咖啡饮品,获取你所有在星巴克的消费记录。
2、对于你来说,这是你随身带着,进入星巴克的身份识别。
对于软件系统来说: web浏览器 就相当于 你
web服务器 就相当于 星巴克
**会员卡用来建立你和星巴克之间的联系,
cookies用来建立web浏览器和web服务器之间的联系。**
以上简要的解释了cookies.那么cookies从何而来?
你在星巴克第一次建立会员关系时,你需要向星巴克提供你的相关信息,星巴克才能够生成一张ID卡给你。
同样,第一次与web服务器建立关系时,也需要向服务器提供你的信息。在这里,就是用户的权限帐号和密码了。
所以我们需要通用用户名和密码信息的提交,来获取服务器给我们提供的cookies.
然后在后续的获取用户其它信息的请求中,带上cookies。(神马是http请求,请自行度娘)
所以cookie是由服务器返回给客户端的
我们在平时在登陆一个网站后,长时间不操作,再次去操作就会自动跳出重新登录的提示,为神马?
因为。。cookie也是有有效期的
长时间不与服务端交流交流,人家就忘了你啦。。所以,需要你重新提供身份证明。
当然了,cookie不止存储了我们这里讲的身份id,还会存储与本次会话相关的一些其它信息。