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. SpringCloud微服务实战——搭建企业级开发框架(四):集成SpringCloud+SpringBoot

    1.在GitEgg工程的根目录,最上级父pom.xml文件中引入需要依赖的库及Maven插件,设置编码方式: <!--?xml version="1.0" encoding= ...

  2. 【UE4 C++】定时器 Timer 与事件绑定

    概念 定时执行操作,可执行一次,或循环执行直到手动终止 定时器在全局定时器管理器(FTimerManager 类型)中管理.全局定时器管理器存在于 游戏实例 对象上以及每个 场景 中 定时器需要绑定委 ...

  3. Nginx高效核心

    Nginx高效核心 目录 Nginx高效核心 Introduction I/O特性 同步/异步 阻塞/非阻塞 常见的I/O模型 阻塞型 非阻塞型 多路复用模型(多路阻塞) 信号驱动模型 异步模型 Ng ...

  4. elasticsearch的dsl查询

    测试es的dsl查询,准备数据,在插入数据的时候,如果index.type.mapping都没有,es会自动创建 一.数据的准备 curl -XPOST "http://192.168.99 ...

  5. MIPI的走线阻抗

    MIPI的走线阻抗100欧的要求是根据LVDS(Low Voltage Differential Signaling)电平定义的. LVDS差分信号PN两线最大幅度是350mV,内部一个恒流源电流是3 ...

  6. Java 中 List 分片的 5 种方法!

    前些天在实现 MyBatis 批量插入时遇到了一个问题,当批量插入的数据量比较大时,会导致程序执行报错,如下图所示: 原因是 MySQL 只能执行一定长度的 SQL 语句,但当插入的数据量较多时,会生 ...

  7. cesium制作自己的骑行轨迹

    制作自己的骑行轨迹 马上国庆节了,计划骑车回家,突然想到把所有的骑行线路汇总一下,无奈码表和APP不支持这样的操作,出于职业病,在此操作一下. 我用的是黑鸟码表,可以导出fit运动轨迹,但是fit还需 ...

  8. SimpleNVR流媒体服务系统录像功能解析

    录像的回放与观看是许多人在使用视频监控时必不可少的需求.人不可能每时每刻都观看视频,而录像能对摄像机的视频信息进行存储,方便用户的后期回放查看,因此,SimpleNVR的录像功能应运而生.       ...

  9. 组件通过props属性传值

    组件之间的传值 组件是一个单独功能模块的封装,有属于自己的data和methods,一个组件的 data 选项必须是一个函数 为什么必须是函数:因为只有当data是函数时,不同实例调用同一个组件时才会 ...

  10. Go defer 原理和源码剖析

    Go 语言中有一个非常有用的保留字 defer,它可以调用一个函数,该函数的执行被推迟到包裹它的函数返回时执行. defer 语句调用的函数,要么是因为包裹它的函数执行了 return 语句,到达了函 ...