談談你對cookie的理解

在瀏覽器中cookie包含跨域

Name Value
Domain Path
Expires/Max-Age Size HttpOnly Secure SameSite
名稱 生成該 Cookie 的域名
該 Cookie 是在當前的哪一個路徑下生成的
過時時間,在設置的某個時間點後該 Cookie 就會失效
字段 此cookie大小。
字段 cookie的httponly屬性。若此屬性爲true,則只有在http請求頭中會帶有此cookie的信息,而不能經過document.cookie來訪問此cookie。
若是設置了這個屬性,那麼只會在 SSH 鏈接時纔會回傳該 Cookie

Expires

該屬性用來設置Cookie的有效期。Cookie中的maxAge用來表示該屬性,單位爲秒。Cookie中經過getMaxAge()和setMaxAge(int maxAge)來讀寫該屬性。maxAge有3種值,分別爲正數,負數和0。瀏覽器

若是maxAge屬性爲正數,則表示該Cookie會在maxAge秒以後自動失效。瀏覽器會將maxAge爲正數的Cookie持久化,即寫到對應的Cookie文件中(每一個瀏覽器存儲的位置不一致)。不管客戶關閉了瀏覽器仍是電腦,只要還在maxAge秒以前,登陸網站時該Cookie仍然有效。下面代碼中的Cookie信息將永遠有效。安全

當maxAge屬性爲負數,則表示該Cookie只是一個臨時Cookie,不會被持久化,僅在本瀏覽器窗口或者本窗口打開的子窗口中有效,關閉瀏覽器後該Cookie當即失效。cookie

修改或者刪除Cookiedom

HttpServletResponse提供的Cookie操做只有一個addCookie(Cookie cookie),因此想要修改Cookie只能使用一個同名的Cookie來覆蓋原先的Cookie。若是要刪除某個Cookie,則只須要新建一個同名的Cookie,並將maxAge設置爲0,並覆蓋原來的Cookie便可。網站

新建的Cookie,除了value、maxAge以外的屬性,好比name、path、domain都必須與原來的一致才能達到修改或者刪除的效果。不然,瀏覽器將視爲兩個不一樣的Cookie不予覆蓋。get

值得注意的是,從客戶端讀取Cookie時,包括maxAge在內的其餘屬性都是不可讀的,也不會被提交。瀏覽器提交Cookie時只會提交name和value屬性,maxAge屬性只被瀏覽器用來判斷Cookie是否過時,而不能用服務端來判斷。域名

咱們沒法在服務端經過cookie.getMaxAge()來判斷該cookie是否過時,maxAge只是一個只讀屬性,值永遠爲-1。當cookie過時時,瀏覽器在與後臺交互時會自動篩選過時cookie,過時了的cookie就不會被攜帶了。it

Cookie的域名table

Cookie是不能夠跨域名的,隱私安全機制禁止網站非法獲取其餘網站的Cookie。

正常狀況下,同一個一級域名下的兩個二級域名也不能交互使用Cookie,好比test1.mcrwayfun.com和test2.mcrwayfun.com,由於兩者的域名不徹底相同。若是想要mcrwayfun.com名下的二級域名均可以使用該Cookie,須要設置Cookie的domain參數爲.mcrwayfun.com,這樣使用test1.mcrwayfun.com和test2.mcrwayfun.com就能訪問同一個cookie

Cookie的路徑

path屬性決定容許訪問Cookie的路徑。好比,設置爲"/"表示容許全部路徑均可以使用Cookie

相關文章
相關標籤/搜索