存儲 | 生命週期 |
---|---|
cookie | 沒有設置 expires 選項時,cookie 的生命週期僅限於當前會話中,關閉瀏覽器意味着此次會話的結束,因此會話 cookie 僅存在於瀏覽器打開狀態之下。 這就是爲何當你登陸一個 Web 應用時常常會看到一個複選框,詢問你是否記住登陸信息:若是你勾選了複選框,那麼一個 expires 選項會被附加到登陸 cookie 中。 |
localStorage | 生命週期是永久,這意味着除非用戶顯示在瀏覽器提供的UI上清除localStorage信息,不然這些信息將永遠存在。 |
sessionStorage | 生命週期爲當前窗口或標籤頁,一旦窗口或標籤頁被永久關閉了,那麼全部經過sessionStorage存儲的數據也就被清空了。 |
cookie的兩種形式
短暫性的:瀏覽器關閉後或者頁面關閉後就刪除cookie
具備有效期的:設置了有效時間,瀏覽器關閉依然存在硬盤javascript
cookie屬性:secure
安全的Cookie只有基於HTTPS協議加密的請求才會發送給服務端。java
cookie屬性:httpOnly
爲避免跨域腳本 (XSS) 攻擊,經過JavaScript的 Document.cookie API沒法訪問有HttpOnly 標記的Cookie,Cookie只須要發送給服務端。web
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/cookie