摘要:今天同事遇到一個問題,大概描述如下瀏覽器已經(jīng)接收指令,之前在一級域名下存儲了相關(guān)的信息。顯然是的一個子域。在正常用戶的瀏覽行為中,應(yīng)用會向自己的域下寫入。
今天同事遇到一個問題,大概描述如下:
瀏覽器已經(jīng)接收指令,之前在一級域名下存儲了相關(guān)的信息。這里為了簡化問題,假設(shè)我們有兩個應(yīng)用A和B,域名分別為:a.b.com和c.a.b.com。(顯然B是A的一個子域)。
上面的描述就是:在.b.com這個一級域名下,我們已經(jīng)成功寫入了一個cookie,假設(shè)為:b=level1。
在正常用戶的瀏覽行為中,應(yīng)用A會向自己的域下寫入a=level2(domain:a.b.com)。
在A正常的頁面中,有些場景會有異步的請求發(fā)出到B應(yīng)用的頁面(用于獲取數(shù)據(jù)),合理的一種想法是:發(fā)送到B應(yīng)用的請求,應(yīng)該攜帶著上面的b=level1,a=level2這兩個cookie信息到B應(yīng)用的服務(wù)器去才對。但是,實際的情況是,b=level1被如愿攜帶上來,但是a=level2這個信息卻被丟棄了?。ù_切的說是沒有跟著request一起被發(fā)送到B的服務(wù)端)。
為啥?在訪問子域應(yīng)用時,不是父域名下的cookie都應(yīng)該被攜帶上來嗎?就像上面的b=level1那樣?
其實,關(guān)于這點,在cookie的RFC規(guī)范中,并沒有太明顯的說明,至少我沒有看到,即使又看了一遍RFC6265中關(guān)于Domain Matching的描述也是如此。
但實際的使用過程中,某個域下的cookie如果希望能夠被他的子域具有可見性(即可以讀?。?,必須要注意的一點是,應(yīng)該保證這個cookie在被Set的時候,應(yīng)該以"."開頭?;氐缴厦娴睦樱?b>a=level2這個cookie沒有在用戶瀏覽器請求B應(yīng)用時被攜帶到B的server端,就是因為a=level2這個cookie的domain不是.a.b.com,而是a.b.com。
事實上,上面例子中的A應(yīng)用,在向自己的域名下寫入a=level2這個cookie時,壓根就沒有顯示的設(shè)置domain這個屬性,這樣一來,瀏覽器接受到這個Set Cookie的請求時,就會以默認以當前應(yīng)用的域名作為cookie的domain。(不過據(jù)說某些版本的Firefox到是會自作聰明的在當前域名的前面自動加上一個點,這個待驗證!)
這一個小點的區(qū)別,還是很容易被忽略的,不過產(chǎn)生的瀏覽行為還是有細微差別的。(涉及到cookie是否上傳,是否占用網(wǎng)絡(luò)流量等)
PS:關(guān)于上面說到的那個問題,stackoverflow上的這個有個截圖,看著說明就直觀很多了。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/104913.html
摘要:假設(shè)有兩個域名域名域名域名有分級的概念,也就是說域名與域名都是的子域名,又是的子域名在域名所使用的服務(wù)中,可以設(shè)置域名在服務(wù)端設(shè)置的時候,設(shè)置為或沒有區(qū)別,注意前面的點,即只要是為顯式的聲明,前面帶不帶點沒有區(qū)別。 1 Cookie簡介 Cookie是由W3C組織提出,最早由NetScape社區(qū)發(fā)展的一種機制。Cookie是存儲于訪問者的計算機中的變量。每當同一臺計算機通過瀏覽器請求某...
摘要:假設(shè)有兩個域名域名域名域名有分級的概念,也就是說域名與域名都是的子域名,又是的子域名在域名所使用的服務(wù)中,可以設(shè)置域名在服務(wù)端設(shè)置的時候,設(shè)置為或沒有區(qū)別,注意前面的點,即只要是為顯式的聲明,前面帶不帶點沒有區(qū)別。 1 Cookie簡介 Cookie是由W3C組織提出,最早由NetScape社區(qū)發(fā)展的一種機制。Cookie是存儲于訪問者的計算機中的變量。每當同一臺計算機通過瀏覽器請求某...
摘要:可選的最長有效時間,格林尼治標準時間。如果不傳表示這是一個會話期。默認值為當前文檔訪問地址的主機名不包含子域名。設(shè)置的目錄及其子目錄都生效??蛇x設(shè)置了屬性的不能使用經(jīng)由屬性和進行訪問以防范跨站腳本攻擊。 問題 描述 先看下后臺返回的Set-Cookie字段:showImg(https://segmentfault.com/img/bVbulhz?w=858&h=128);查看瀏覽器Co...
摘要:背景是一種無狀態(tài)的協(xié)議,它不對請求和響應(yīng)之間的通信狀態(tài)進行保存,即無法根據(jù)之前的狀態(tài)進行本次請求的處理。為了保留無狀態(tài)協(xié)議這個特征的同時又要解決類似的矛盾問題,于是引入了。主要目的是為防止跨站腳本攻擊對的信息竊取。 需求場景 一個Vue單頁應(yīng)用,A、B、C 三個頁面都引用了一個公用的時間選擇器。用戶在各自頁面選擇完時間后,A,B,C頁面互相切換時保存選擇的時間,在關(guān)閉瀏覽器tab后,清...
閱讀 1242·2021-11-23 10:10
閱讀 1648·2021-09-30 09:47
閱讀 982·2021-09-27 14:02
閱讀 3044·2019-08-30 15:45
閱讀 3086·2019-08-30 14:11
閱讀 3680·2019-08-29 14:05
閱讀 1880·2019-08-29 13:51
閱讀 2267·2019-08-29 11:33