cookie的生命周期

cookie的生命周期可以通过两种方式定义:

  • 会话期cookie是最简单的cookie:浏览器关闭后会被自动删除。会话期cookie不需要指定过期时间(Expires)或者有效期(Max-Age)。需要注意的是,有些浏览器提供了会话恢复功能,这种情况即使关闭了浏览器,会话期cookie也会被保留下来,这会导致cookie的生命周期无限期延长
  • 持久性cookie的生命周期取决于过期时间(Expires)或者有效期(Max-Age)指定的一段时间。
    • 当Cookie的过期时间被设定时,设定的日期和时间只与客户端相关,而不是服务端。

限制访问Cookie

  • Secure:标记为Secure的cookie通过被HTTPS协议加密过的请求发送给服务端。可以预防man-in-the-middle攻击。

    • 从Chrome52和firefox 52开始,非Https的站点无法使用Cookie的Secure标记。
  • HttpOnly:JavaScript Document.cookie API无法访问带有HttpOnly属性的cookie,此类cookie仅作用于服务器。此属性有助于缓解跨站点脚本(XSS)攻击。

Cookie的作用域

  • Domain:指定了哪些主机可以接受cookie。如果不指定,默认为origin,不包含子域名。如果指定了Domain,一般包含子域名。

    • 当前大多数浏览器遵循 RFC 6265,设置 Domain 时 不需要加前导点。浏览器不遵循该规范,则需要加前导点,例如:Domain=.mozilla.org
  • Path:指定了主机下的哪些路径可以接受cookie。以"/"作为路径分隔符,子路径也会被匹配。
  • SameSite:允许服务器要求某个cookie在跨站请求时不会被发送,其中Site由可注册域定义,从而可以组织跨站请求伪造攻击(CSRF)。取值如下:
    • None:浏览器会在同站请求、跨站请求下继续发送cookies,不区分大小写。
    • Strict:浏览器只在访问相同站点时发送cookie。
    • Lax:与Strict类似,但用户从外部站点导航至URL时(例如通过链接)除外。在新版本浏览器中,为默认选项为默认选项,Same-site cookies 将会为一些跨站子请求保留,如图片加载或者 frames 的调用,但只有当用户从外部站点导航到URL时才会发送。如 link 链接。
      • 以前,SameSite如果没有设置,默认行为等同于None,cookies会被包含在任何请求中,包括跨站请求。
      • 大多数主流浏览器正在将SameSite的默认值迁移到Lax,如果要指定cookie在同站、跨站请求都被发送,需要明确指定SameSite为None。

Cookie prefixes

  • __Host-:如果cookie名称具有此前缀,仅当它也用Secure属性标记,是从安全源发送的,不包含Domain属性,并将Path属性设置为/时,它才在Set-Cookieheader中接受。这些cookie可以被视为"domain-locked"。
  • __Secure-:如果cookie明白包含此前缀,则仅当它也用Secure属性标记,是从安全源发送的,它才在Set-Cookieheader中接受。此前缀限制弱于__Host-前缀。
  • 带有这些前缀的cookie,如果不符合其限制的会被浏览器拒绝。

参考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Cookies

关联cookie知识点:Cookie的HttpOnly、secure、domain属性

cookie的生命周期、访问限制、作用域、prefixes的更多相关文章

  1. 如何调整cookie的生命周期

    一.什么是cookie 形象比喻成“网络身份证” 指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密). (1)记录信息的盒子(2)识别每一个网络用户的证件 ...

  2. spring bean 生命周期和 ? 作用域? spirng bean 相互依赖? jvm oom ? jvm 监控工具? ThreadLocal 原理

    1. spring bean 生命周期 1. 实例化一个bean ,即new 2. 初始化bean 的属性 3. 如果实现接口 BeanNameAware ,调用 setBeanName 4. Bea ...

  3. cookie、localStorage、sessionStorage 的生命周期

    生命周期 存储 生命周期 cookie 没有设置 expires 选项时,cookie 的生命周期仅限于当前会话中,关闭浏览器意味着这次会话的结束,所以会话 cookie 仅存在于浏览器打开状态之下. ...

  4. [转载]Cookie与Session的区别与联系及生命周期

    前几天面试问了一个问题,当时记不太清了,上网查了下发现这个问题还真的很有讲究而且很重要,自己总结下做下记录. 一.Session与Cookie介绍 这些都是基础知识,不过有必要做深入了解.先简单介绍一 ...

  5. Cookie 和 Session 的区别和联系?session的生命周期?多个服务器部署session的管理?

    一.session 和 cookie 1.cookie Cookie会根据响应报文里的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie.当下次客户端再向服务端发起请求时,客户端会 ...

  6. Java对象的生命周期与作用域的讨论(转)

    导读: Java对象的生命周期大致包括三个阶段:对象的创建,对象的使用,对象的清除.因此,对象的生命周期长度可用如下的表达式表示:T = T1 + T2 +T3.其中T1表示对象的创建时间,T2表示对 ...

  7. Cookie与Session的区别与联系及生命周期

    Cookie与Session的区别与联系及生命周期 一.Session与Cookie介绍 这些都是基础知识,不过有必要做深入了解.先简单介绍一下. 二者的定义: 当你在浏览网站的时候,WEB 服务器会 ...

  8. session生命周期,与cookie的区别

    sessinon在用户访问第一次访问服务器时创建. Session什么时候失效? 1. 服务器会把长时间没有活动的Session从服务器内存中清除,此时Session便失效.Tomcat中Sessio ...

  9. Spring中Bean的作用域、生命周期

                                   Bean的作用域.生命周期 Bean的作用域 Spring 3中为Bean定义了5中作用域,分别为singleton(单例).protot ...

随机推荐

  1. 分割迭代器Spliterator源码文档翻译

    前言 身体是革命的本钱,不舒服了2周,现在好点了. 学习JDK8的Stream,Spliterator这个分割迭代器是必须要重视的. Notes:下方蓝色文字是自己的翻译(如果有问题请指正).黑色文字 ...

  2. Scrum Meeting 0522

    零.说明 日期:2021-5-22 任务:简要汇报两日内已完成任务,计划后两日完成任务 备注:由于在Beta冲刺阶段的最后一周中团队成员需要准备必修课程计算机网络的相关考试,所以为了保证Beta功能的 ...

  3. Beta阶段性总结

    1.题士开发总结 2.反思 2.1 Issue管理 从0522敲定各个功能的API后,团队成员及时沟通,积极开发,但由于开发过程没能有效体现在issue上(如未能及时在issue上形成记录,功能开发完 ...

  4. [调试笔记] 10.8模拟赛11 T4 甜圈

    这题正解线段树维护哈希,同机房神犇已经讲的很明白了.这里只说sbwzx在调试的时候犯的sb错误. 1.关于pushdown和update 众所周知,sbwzx一写带lazy的线段树,就必在pushdo ...

  5. Azure File Storage(一)为本地机器配置网络磁盘

    一,引言 本地机器硬盘空间不够了怎么办?重要文件不想存储在本地硬盘怎么办?加外接移动硬盘:或者换大容量存储设备,都是解决方案.但是每次都得携带,还得考虑当前设备是否支持外接硬盘. 1,这个时候 Win ...

  6. DDR3 IP和CIC IP仿真问题解决记录

    1.更新vivado的仿真库(data/secureip和verilog和vhdl文件夹)至最新的vivado库和生成IP的版本匹配: 2.vcs编译脚本里面把仿真库地址指向匹配的仿真库版本: 3.v ...

  7. linux 内核源代码情景分析——linux 内核源代码中的C语言代码

    linux 内核的主体是以GNU的C语言编写的,GNU为此提供了编译工具gcc.GNU对C语言本身作了不少扩充. 1) gcc 从 C++ 语言中吸收了"inline"和" ...

  8. dotnet OpenXML 转换 PathFillModeValues 为颜色特效

    在 OpenXml 预设形状,有一些形状设置了 PathFillModeValues 枚举,此枚举提供了亮暗的蒙层特效.具体的特效是让形状选择一个画刷,在画刷上加上特效.如立体几何 Cube 形状,在 ...

  9. 几十行js实现很炫的canvas交互特效

    几十行js实现很炫的canvas交互特效 废话不多说,先上效果图! 本篇文章的示例代码都是抄的一个叫Franks的老外在yutube上的一个教学视频,他还出了很多关于canvas的视频,十分值得学习, ...

  10. 字符编码之间的转换 utf-8 , gbk等,(解决中文字符串乱码)

    目录 1.背景. 2.编码的理解 3.编码之间的相互转化 4. str类型说明 5. 可以使用的编码类型 6.参考文章 1.背景 Python中与其他程序进行交互时,如果存在字符串交互,特别是字符串中 ...