Cookie跨域以及Cookie共享问题
Cookie跨域問題
假設有兩個網站 A: www.a.com 與 B: www.b.com
- 跨域請求的cookie存儲問題
在A域名的站點下請求了B域名,假設訪問成功且發送的請求返回了cookie,那么此時瀏覽器保存該cookie的domain是 www.b.com,也就是說請求的是哪個地址,對應的請求返回的cookie的domian就是那個請求地址,和當前的域名無關。不會將B網站返回的cookie的域名設置為www.a.com。
- 跨域請求的cookie攜帶問題
在站點A下面訪問B域名的接口,那么這是一個跨域請求,如果不做處理,此時這個請求就跨域了,瀏覽器在接收到響應以后會直接報錯。那么這個時候如何讓瀏覽器允許跨域請求?通常有2中解決辦法:1.設置代理 2.服務器在響應頭中添加 allow-origin。
解決跨域以后,如何允許跨域請求攜帶cookie,例如訪問B的接口,默認情況下是不允許帶cookie的,此時需要設置axios的withcredentials的屬性為true,告訴瀏覽器在訪問B網站時,將B網站的cookie帶上,此時光前端設置還不行,還需要后端在響應頭中添加 allow-withcredentials = true,這樣就可以保證跨域請求也可以攜帶cookie。
Cookie共享問題
cookie的作用域和域名有關,和協議以及端口無關。
- path屬性
cookie的path屬性決定了訪問該域名的那些路徑時可以攜帶cookie,當一個tomcat部署多個服務時,將path設置為/,則訪問所有tomcat項目時都可以攜帶。
- domain屬性
cookie的domain屬性才是決定了訪問哪個域名時可以攜帶哪些cookie,服務器可以手動設置domian,默認的domain就是請求url中的域名,但是服務器也可以設置當前域名的子域名,但是不允許設置其他域名,如果設置了其他域名,會直接被瀏覽器丟棄。 例如,訪問 www.baidu.com ,則 服務器可以設置cookie的域名為 www.baidu.com、.baidu.com、baike.baidu.com。當baidu.com下的子域名訪問時,也可以攜帶上.baidu.com的cookie,例如當前網站是 www.baike.baidu.com,訪問baike的請求時也可以攜帶 baidu.com的cookie。利用這個特性也可以實現多個相互信任系統之間的單點登錄問題。
總結
以上是生活随笔為你收集整理的Cookie跨域以及Cookie共享问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gazebo+rviz中配置UR+rob
- 下一篇: “onkeyup”=按键抬起触发,“on