Cookie学习记录

本篇博客作为Cookie的学习记录,我有幸看到Andrew.Zhou的一篇博客,内容详实,对我有很大帮助,于是借鉴整理一番,在此做出感谢,如有侵权,联系删除。

原文地址:https://www.cnblogs.com/andy-zhou/p/5360107.html#_caption_0

浏览器和服务器之间进行通信的时候使用的是HTTP协议,因为HTTP是无状态的协议,服务器不会存储客户端的信息。但是在实际的工作中,一些网页应用又希望能够识别用户,实现更方便的功能,例如淘宝天猫中的购物车等等。于是Cookie就应运而生,Cookie通过在客户端记录信息确定用户身份。

Cookie的机制

Cookie是由服务器生成,发送给客户端的信息,该信息以文本文件的形式保存在客户端中,然后每次客户端向服务器发送请求的时候都会带上这个信息。即:

当客户端第一次访问浏览器的时候,服务器会给该请求制定一个唯一的识别码,然后以此识别码作为索引在服务器后台的数据库中生成一个项目,然后再将该识别码放在响应报文的首部返回给客户端,客户端收到后保存在本地;以后每次客户端向服务端发送请求的时候都会将该信息放在请求报文的首部发送给服务器,服务器收到后分析请求报文首部的Cookie,动态生成与该客户端相对应的内容,例如,根据之前客户的浏览记录向客户推荐相关网页。

会话跟踪在应用程序中非常重要,一个用户的所有操作属于一个会话,不同用户的操作属于不同的会话(就像网购,每个人都有自己的购物车,不能和他人的购物车混淆)。然而HTTP协议是无连接、无状态的协议,一旦请求响应完毕,服务器就断开连接,因此服务器不能在服务端进行会话跟踪,当用户再次进行操作时已经无法辨别该操作属于哪个会话了。

服务器返回报文的首部行中包含一个Set-Cookie字段,客户端会将此Cookie保存起来,以后客户端发送请求的时候都自动发送一个Cookie字段,Cookie就像一张通行证,方便服务器识别用户的身份和状态。

Cookie的特性:不可跨域

即每个使用Cookie的服务器都会给客户端设置一个Cookie,这些不同的域一般是不能访问和操作其他域设置的Cookie。例如:谷歌 和 百度 设置的Cookie,互相之间不能访问与操作,客户端浏览不同的网站时会自动向服务器发送相应的Cookie。

Cookie的属性

1、有效期

规定了Cookie的有效期限,逾期失效。Cookie并不提供修改、删除操作。如若修改,只需设置一个同名的Cookie,然后再修改其他属性,添加即覆盖原Cookie;如若删除,则只需设置一个同名的Cookie,将时间设为过期即可。如果不在浏览器中设置过期时间,cookie被保存在内存中,生命周期随浏览器的关闭而结束,这种cookie简称会话cookie。如果在浏览器中设置了cookie的过期时间,cookie被保存在硬盘中,关闭浏览器后,cookie数据仍然存在,直到过期时间结束才消失。

2、域名 domain (Cookie所在的域)

通过修改域名来改变访问、操作Cookie的权限。因为不同的域名是不能互相访问和操作对方的Cookie的,所以通过修改该属性达到访问或操作Cookie的权力。例如:a.xyz.com和b.xyz.com严格来说属于不同的域名,无法互相访问Cookie。修改domain属性,设为“ . xyz . com” ,则xyz.com下的所有二级域名都能访问该Cookie

3、路径 Path(Cookie所在的目录)

功能同上,控制同一域名下访问该Cookie的路径,规定哪个路径下能访问,哪个不能访问。

4、安全属性 secure

设置Cookie的secure属性为true,浏览器只会在HTTPS和SSL等安全协议中传输此类Cookie。


借图:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值