一 无状态的http需要状态保持
1 http协议本身是无状态的,不记录不区分不在意请求端是谁,这与设计该协议的目的是一致的。在设计之初就是为了客户端查看或者下载服务端的资源,实现资源的共享,客户端和服务器端之间就是一锤子的买卖,你发一个请求,我给一个响应,你再发一个请求,我也不会记得你之前发过请求对你有什么区别对待,像第一次接到请求一样返回一个响应。好啦,你这个客户端之后无论再发多少个请求,服务端都待此客服端的每次请求如初恋。
2 随着时间的流逝,人们对和网站交互有了需求。而进行交互前,网站一般都需要用户先注册登录后才能进行上传的某些操作,比如晋江文学城发表对某本书的评论,往贴吧论坛里发帖子发,在淘宝上买东西,都需要先登录。用户登录后希望服务器对用户能进行区分,记住该用户登录过了,有上传的权限,有下单的权限,下单买了什么等。
3 问题来了,http小仙女本人是无连接的,有脸盲症,记不住用户,做不到区分用户,用户每次发请求都要他重发登录信息,提交次就写一次用户名密码,这就很麻烦了。怎么办?
大家想出个办法不然给用户编个身份证吧,服务器把身份证给用户,用户访问服务器时再把身份证发送给服务器,服务器检查身份证就可以区分了。
二 Cookie 服务器给用户发送的爱的号码本
1 实现过程
讨论已注册通过的用户场景
1.1 用户在登录页面输入用户名和密码后,点击登录,发送请求给服务器。
1.2 服务器通过查询数据库验证用户名和密码,验证通过。在响应头中的Set-Cookie字段中设置Cookie的名值对和属性
1.3 客户端从响应中获取Cookie的名值,再次发送请求给服务器端时,请求头的Cookie字段中只放入名值,不发送Set-Cookie中的属性。
1.4 服务器接受到客户端的请求报文,查看Cookie的值,对用户的身份和状态等信息进行验证。
2 Set-Cookie=cookie的值+属性
360浏览器中查询到保存的简书的Cookie,查看方法工具--》选项--》高级设置--》网页内容设置--》所以cookie和网站数据。


2.1 服务器端怎么产生Cookie,服务端如何验证Cookie的值?
本质上说Cookie是一段文本信息,只能存放字符串类型的数据,只能保存英文,不能保存中文。
2.2 浏览器可以存放多少cookie?
一个网站可以向浏览器发送多个cookie,一个浏览器也可以存放多个网站的cookie。
浏览器最多可以存放300个cookie,允许一个网站最多存放20个cookie,每个cookie的大小不超过4K。
2.3 Cookie 的属性
【path】:Cookie的有效路径,浏览器访问有效路径下的资源都会带着这个cookie。如果访问非此浏览器下的资源就不带这个cookie了。一般设置为资源所在的路径,写为/
【Domin】生成该Cookie的域名,domin和path在一起构成了cookie的作用范围。
【SetMaxAge】cookie的过期时间
正数:浏览器将cookie的数据存放在硬盘中,数值表示存放的时间,单位为秒
负数:浏览器将cookie存放在内存中,浏览器窗口关闭cookie就失效。浏览器窗口的一次开启关闭就是一次会话,所以也被称为会话cookie。
0:删除同名的cookie数值,SetMaxAge一设置为0后,浏览器对应的同路径同名cookie就失效。
【总结】
1 同一用户方向同一网站可能有多个Cookie,关键是看服务器给定的cookie的作用范围(path+domin)
【疑问】
1Cookie的作用范围就是网站的根目录,并且还没到失效时间,为什么在浏览器中会存在多个Cookie的情况?
【参考】
https://mp.weixin.qq.com/s/nyUeSDvvFjaJvHR9TeQfqA
https://zm8.sm-tc.cn/?src=l4uLj4zF0NCIiIjRnJGdk5CYjNGckJLQk5aKiJqWz8fNy9CejYuWnJOajNDIycbGyczN0ZeLkpM%3D&uid=df2358248bbf5e24bc15f0e78f728eb0&hid=5c206ef9aa60682b51c073de67d63b32&pos=3&cid=9&time=1555515911794&from=click&restype=1&pagetype=0020004002000402&bu=ss_doc&query=%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%A7%A3%E6%9E%90cookie&mode=&v=1&force=true&wap=false&uc_param_str=dnntnwvepffrgibijbprsvdsdichei6
网友评论