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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM