19 | 让我知道你是谁:HTTP的Cookie机制
该思维导图由 AI 生成,仅供参考
什么是 Cookie?
- 2.0x
- 1.5x
- 1.25x
- 1.0x
- 0.75x
- 0.5x
- 深入了解
- 翻译
- 解释
- 总结
HTTP的Cookie机制赋予了HTTP协议“记忆能力”,通过在浏览器和服务器之间传递“小纸条”(即Cookie),实现了用户身份识别和个性化服务。文章介绍了Cookie的工作过程,包括响应头字段Set-Cookie和请求头字段Cookie的传递,以及Cookie的属性设置,如有效期、作用域和安全性。通过详细解释,读者可以快速了解HTTP的Cookie机制,以及如何在实际应用中设置和管理Cookie。此外,文章还探讨了Cookie的应用,包括身份识别和广告跟踪等常见用途。尽管现在出现了多种Local Web Storage技术,但Cookie仍然是最通用、兼容性最强的客户端数据存储手段。文章提供了小结和课下作业,帮助读者加深对Cookie的理解,并鼓励他们参与讨论和分享。
《透视 HTTP 协议》,新⼈⾸单¥59
全部留言(72)
- 最新
- 精选
- 徐海浪1. 如果 Cookie 的 Max-Age 属性设置为 0,会有什么效果呢? 设置为0,服务器0秒就让Cookie失效,即立即失效,服务器不存Cookie。 2. Cookie 的好处已经很清楚了,你觉得它有什么缺点呢? 好处:方便了市民 缺点:方便了黑客:)
作者回复: √
2019-07-10448 - 放开那个猴子广告追踪没看明白呀,能否详细讲讲
作者回复: 是这样的,网站的页面里会嵌入很多广告代码,里面就会访问广告商,在浏览器里存储广告商的cookie。 你换到其他网站,上面也有这个广告商的广告代码,因为都是一个广告商网站,自然就能够读取之前设置的cookie,也就获得了你的信息。
2019-07-101436 - Geek_66666既然max-age=0会立即失效,那不就等于无记忆了?那干嘛还用cookie?
作者回复: max-age=0是指不能缓存,但在会话期间是可用的,浏览器会话关闭之前可以用cookie记录用户的信息。
2019-08-15228 - 前端西瓜哥1. (我修改 Lua 文件测试了一下)如果 Max-Age 设置为0,浏览器中该 Cookie 失效,即便这个 Cookie 已存在于浏览器中,且尚未过期。另外 Web 应用开发中,可以通过这种方式消除掉用户的登陆状态,此外记得在服务器的 session 中移除该 cookie 和其对应的用户信息。 2. Cookie 的缺点: (1) 不安全。如果被中间人获取到 Cookie,完全将它作为用户凭证冒充用户。解决方案是使用 https 进行加密。 (2)有数量和大小限制。另外 Cookie 太大也不好,传输的数据会变大。 (3)客户端可能不会保存 Cookie。比如用 telnet 收发数据,用户禁用浏览器 Cookie 保存功能的情况。
作者回复: good。
2019-07-1124 - 饭饭Max-age:-1 的时候会永久有效吧 ?
作者回复: rfc里有说明,如果max-age <=0,统一按0算,立即过期。
2019-07-1018 - WL对于XSS和XSRF一直不是很理解希望老师帮忙解答一下: 1. XSS攻击是指第三方的JS代码读取到浏览器A网站的Cookie然后冒充我去访问A网站吗? 2.XSRF是指浏览器从A网站跳转到B网站是会带上A网站的Cookie吗?这个不是由Domain和Path已经限定了吗?
作者回复: 1,是的。 2.你理解的反了,应该是带上B网站的cookie。 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Cookies 这个链接里举的例子也许能够帮助你理解。
2019-07-10316 - rongyefeng还有一个属性叫“Secure”,表示这个 Cookie 仅能用 HTTPS 协议加密传输,明文的 HTTP 协议会禁止发送。 但 Cookie 本身不是加密的,浏览器里还是以明文的形式存在。 这里的“ Cookie 本身”怎么理解?
作者回复: 意思是cookie在传输过程是被https加密的,不能用明文的http传输,但在本地,它还是明文,没有被加密,还是能够被任意查看。
2020-05-2813 - 业余草属性“HttpOnly”、“Secure”、“SameSite”很少见,老师可以给几个配套例子,后面答疑篇,可以来个攻防实战!
作者回复: 其实并不少见,上几个大站,用开发者工具看看就能看到。
2019-07-10211 - cp3yqng域名+路径的方式存储cookie,感觉像只有一台业务服务器,那后台如何过分布式系统呢,用户中心是一个系统,核心业务是其他的系统,这里cookie肯定要共享,应该有一级域名和二级域名等等的概念吧,麻烦老师在解释解释。我本人是做移动端开发的,都是自己把token写在网络底层的请求头中,其实核心思想是一样的,但是缺点就是所有的域名里面都带token,这样也不好,好像还有优化的空间。
作者回复: 只要cookie设置了domain和path属性,浏览器在访问uri时就会根据这两个属性有选择地发送cookie。 需要根据自己的业务需求,恰当设置cookie的作用域,太大太小都不好。
2019-07-106 - 大小兵要是能把session和token也说一下就好了
作者回复: 这个不在http范围之内,而且篇幅有限,还望见谅。
2019-07-1026