瀏覽器發送cookie規則


一、場景再現

當前一個需求,前端不同的域名去請求同一個后端域名服務,導致cookie共用相互影響。

例子:

http://m.test1.com、http://m.test2.com、http://m.test3.com

用戶訪問以上3個鏈接時,后端請求訪問的服務為同一個:http://meng.test.com

解決方案:

跨域過程中要盡量避免多對一的映射,采用一對一的方式。

將每一個前端域名都對應唯一一個后端服務域,分別映射:

http://meng.test1.com、http://meng.test2.com、http://meng.test3.com

后續:

再解決互斥cookie的問題之后,又出現了傳多個同名cookie的情況,如圖:

原因是由於之前 http://m.test2.com、http://m.test3.com 登錄過的cookie仍舊存在本地,當用戶再次請求原后端URL

http://meng.test.com 此時會把不同前端URL所保留的cookie 一並傳給后端。

有一點需要注意,設置了widthCredentials為true的請求中會包含遠程域的所有cookie,但這些cookie仍然遵循同源策略,所以你是訪問不了這些cookie的。

 

二、Cookie介紹

Cookie是用於維持服務端會話狀態的,通常由服務端寫入,在后續請求中,供服務端讀取。

HTTP請求,Cookie的使用過程:

1、server通過HTTP Response中的"Set-Cookie: header"把cookie發送給client

2、client把cookie通過HTTP Request 中的“Cookie: header”發送給server

3、每次HTTP請求,Cookie都會被發送。

HTTP請求發送Cookies的條件:

1、本地已經緩存有cookies

2、根據請求的URL來匹配cookies的domain、path屬性,如果都符合才會發送。

舉個例子:訪問www.baidu.com時,就不發送www.qq.com的cookies.

Cookies查看:

大家可以使用抓包工具,這種工具就不多說,網上搜索出很多。使用這些工具中可以清晰的看到Http Request 中的Cookie, 和Http Response中的cookie

 

參考文獻:HTTP請求中cookies的使用


免責聲明!

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



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