Cookie 相關的一些小知識點

設置 Cookie 的 domain 時,前面帶點和不帶點的區別?

  • 帶點:父域名和任何子域名都可以訪問
  • 不帶點:只有完全一樣的域名才可以訪問,IE 除外,仍然支持子域名訪問

服務端設置 cookie 之后發生了什么?

response.addCookie(cookie);

實際上,服務端設置 cookie 之后,只是將 cookie 種在 response header 的 set-cookie 中,待請求完成,瀏覽器收到響應后會將其存儲。若未設置 Expires/Max-Age,則瀏覽器關閉后 cookie 被刪除,若設置了 Expires/Max-Age 且時間未過期,則不會隨著瀏覽器的關閉而被刪除,下次打開該站點 cookie 值仍然存在!

image

瀏覽器每次請求服務端接口時,request header 中都會攜帶 cookie 值給服務端,服務端可以根據其來判斷登錄狀態

image

Cookie 的 HttpOnly 屬性

默認為空,允許客戶端通過 js 操作 cookie,若此屬性設置為 true,則只有在 http 請求的 request header 中會攜帶此 cookie,而不能通過 document.cookie 來訪問此 cookie,意在提供一個安全的措施來阻止通過 js 發起的跨站腳本攻擊(XSS)竊取 cookie 的行為

Cookie 的作用范圍

比如 aaa.com 訪問 bbb.com 站點的 API(如 bbb.com/passport/login),顯然 Request URL 是在 bbb.com 下,則 http 的 request header 攜帶的 cookie 是 domain 為 bbb.com 的 cookie

若 aaa.com 訪問同域名(即 aaa.com,端口可以不同)下的 API,顯然 Request URL 是在 aaa.com 下,則 http 的 request header 攜帶的 cookie 是 domain 為 aaa.com 的 cookie

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。