1、場景再現
當前一個需求,前端不一樣的域名去請求同一個後端域名服務,致使cookie共用相互影響。前端
例子:後端
http://m.test1.com、http://m.test2.com、http://m.test3.com跨域
用戶訪問以上3個連接時,後端請求訪問的服務爲同一個:http://meng.test.com緩存
解決方案:cookie
跨域過程當中要儘可能避免多對一的映射,採用一對一的方式。dom
將每個前端域名都對應惟一一個後端服務域,分別映射:工具
http://meng.test1.com、http://meng.test2.com、http://meng.test3.comspa
後續:3d
再解決互斥cookie的問題以後,又出現了傳多個同名cookie的狀況,如圖:server
緣由是因爲以前 http://m.test2.com、http://m.test3.com 登陸過的cookie仍舊存在本地,當用戶再次請求原後端URL
http://meng.test.com 此時會把不一樣前端URL所保留的cookie 一併傳給後端。
有一點須要注意,設置了widthCredentials爲true的請求中會包含遠程域的全部cookie,但這些cookie仍然遵循同源策略,因此你是訪問不了這些cookie的。
2、Cookie介紹
Cookie是用於維持服務端會話狀態的,一般由服務端寫入,在後續請求中,供服務端讀取。
HTTP請求,Cookie的使用過程:
一、server經過HTTP Response中的"Set-Cookie: header"把cookie發送給client
二、client把cookie經過HTTP Request 中的「Cookie: header」發送給server
三、每次HTTP請求,Cookie都會被髮送。
HTTP請求發送Cookies的條件:
一、本地已經緩存有cookies
二、根據請求的URL來匹配cookies的domain、path屬性,若是都符合纔會發送。
舉個例子:訪問www.baidu.com時,就不發送www.qq.com的cookies.
Cookies查看:
你們可使用抓包工具,這種工具就很少說,網上搜索出不少。使用這些工具中能夠清晰的看到Http Request 中的Cookie, 和Http Response中的cookie
參考文獻:HTTP請求中cookies的使用