zoukankan      html  css  js  c++  java
  • cookie、localStorage、sessionStorage 的生命周期

    • 生命周期
    存储 生命周期
    cookie 没有设置 expires 选项时,cookie 的生命周期仅限于当前会话中,关闭浏览器意味着这次会话的结束,所以会话 cookie 仅存在于浏览器打开状态之下。
    这就是为什么当你登录一个 Web 应用时经常会看到一个复选框,询问你是否记住登录信息:如果你勾选了复选框,那么一个 expires 选项会被附加到登录 cookie 中。
    localStorage 生命周期是永久,这意味着除非用户显示在浏览器提供的UI上清除localStorage信息,否则这些信息将永远存在。
    sessionStorage 生命周期为当前窗口或标签页,一旦窗口或标签页被永久关闭了,那么所有通过sessionStorage存储的数据也就被清空了。
    • cookie的两种形式
      短暂性的:浏览器关闭后或者页面关闭后就删除cookie
      具有有效期的:设置了有效时间,浏览器关闭依然存在硬盘

    • cookie属性:secure
      安全的Cookie只有基于HTTPS协议加密的请求才会发送给服务端。

    • cookie属性:httpOnly
      为避免跨域脚本 (XSS) 攻击,通过JavaScript的 Document.cookie API无法访问有HttpOnly 标记的Cookie,Cookie只需要发送给服务端。

    • Cookie的作用域:Domain、Path
      Domain 和 Path指令定义了Cookie的作用域,即Cookie需要发送给那些URL。
      Domain指令规定了需要发送Cookie的主机名。如果没有指定,默认为当前的文档地址上的主机名(但是不包含子域名)。如果指定了Domain,则一般包含子域名。
      如果设置了Domain=mozilla.org,则Cookie包含在子域名中(如developer.mozilla.org)。
      Path指令表明需要发送Cookie的URL路径。字符%x2F (即"/")作为路径分隔符,子路径也会被匹配到。
      如设置Path=/docs,则下面这些地址都将匹配到:
      /docs
      /docs/Web/
      /docs/Web/HTTP

    • cookie属性:SameSite
      SameSite的Cookie允许服务器指定在跨站请求时Cookie是否会被发送,从而可以阻止跨站请求伪造攻击(CSRF)。但目前SameSite Cookie还处于实验阶段,并没有被所有的浏览器所支持。

    • 第一方Cookie、第三方Cookie
      第一方Cookie和第三方Cookie其实是一个非常简单的概念,但是我在百度上随便搜索了一些解释,好像都不是很清楚,也不是很准确。实际上,所谓第一方和第三方的说法,是用来确定Cookie的归属的,这个归属是指Cookie中记录的域(domain)。举个例子:如果你访问我的这个网站www.chinawebanalytics.cn的时候,我的网站在你的电脑上设置了一个Cookie,里面的记录的域名也是www.chinawebanalytics.cn,那么这个Cookie就是第一方的,归你访问的网站www.chinawebanalytics.cn所有。而如果你访问网站www.chinawebanalytics.cn时,在你的计算机中设置的Cookie的域名是www.omd.com,那么这个Cookie就是第三方Cookie,归www.omd.com所有。
        对于网站分析而言,这个概念是非常重要的。例如,你会问Google Analytics使用的Cookie是1st party的,还是3rd party的。答案是第一方的。首先,Google Analytics在每个被监测网站上的Cookie都是由我们熟悉的监测javascript代码所创建的(是的,javascript也可以创建Cookie,知道这点就够了,不需要深挖),其次,这个被创建的cookie的域不是analytics.google.com,而是被监测网站自己的域。因此,虽然这个Cookie实际上是在Google Analytics的帮助下建立的,而且也为Google Analytics所用(反而不能被“被监测网站”直接利用),它仍然是第一方Cookie。
        所以,第一方Cookie并不一定需要由某个网站自己的服务器给自己建立,别的网站也能为它建立;而且,第一方Cookie也不一定是能由某个网站自己读取的,它完全可能由第三方读取。第一方和第三方的唯一区别只是:Cookie中的域名是否和被访问网站的域一样,是就是第一方,否就是第三方。

    • 网站分析和所有的互联网广告的监测,都会更喜欢第三方Cookie。
      原因是,第三方Cookie可以用来监测跨网站的访问者行为。例如,DoubleClick使用的就是第三方Cookie,这个公司会为你打开的所有载有DoubleClick广告的页面建立同一个(仅一个)域为DoubleClick的Cookie,这样,只要你打开了这些网页,无论它们是否属于同一网站,你的浏览广告的行为DoubleClick都能知道。但是第一方Cookie就不行了,因为第一方Cookie得用被监测网站的域,这样多个网站就会有多个不同的Cookie,跨网站浏览行为就无法监测了。
        对于大多数浏览器而言,第三方Cookie是被默认关闭的,原因在于人们在讨论Cookie涉及的隐私问题时,倾向于认为第三方Cookie极大的获取了人们的行为隐私,并由此产生了对第三方Cookie普遍的不信任和误解。但事实上,所有的Cookie都不会泄露任何关于浏览者个人的隐私信息,它捕捉的仅仅只是浏览行为本身,第三方Cookie也不例外。而如果所有人都愿意接受第三方cookie,那么网站分析能够给出的分析和优化方案会更多。但可惜,因为第三方Cookie被普遍禁用,因此利用第三方Cookie的监测工具并不多,只有监测网络广告的工具才会坚持使用第三方Cookie。

    • 引用:http://www.chinawebanalytics.cn/cookie-and-protect-cookie/

    • 比较好的介绍文章:http://blog.kazaff.me/2016/09/09/译-在多个标签页之间共享sessionStorage/

  • 相关阅读:
    接口测试总结
    Jmeter教程索引贴
    [转] 配置Log4j
    Jmeter报告优化之New XSL stylesheet
    Jmeter默认报告优化
    iOS 自动移除KVO观察者
    iPhone X 适配 ( iOS 11适配 )
    iOS中自动登录的设计
    iOS APP 安全测试
    APP安全测评checklist---Android
  • 原文地址:https://www.cnblogs.com/cag2050/p/8214726.html
Copyright © 2011-2022 走看看