今天同事遇到乙個問題,大概描述如下:
上面的描述就是:在.b.com這個一級網域名稱下,我們已經成功寫入了乙個cookie,假設為:b=level1。
在正常使用者的瀏覽行為中,應用a會向自己的域下寫入a=level2(domain:a.b.com)。
在a正常的頁面中,有些場景會有非同步的請求發出到b應用的頁面(用於獲取資料),合理的一種想法是:傳送到b應用的請求,應該攜帶著上面的b=level1,a=level2這兩個cookie資訊到b應用的伺服器去才對。但是,實際的情況是,b=level1被如願攜帶上來,但是a=level2這個資訊卻被丟棄了!(確切的說是沒有跟著request一起被傳送到b的服務端)。
為啥?在訪問子域應用時,不是父網域名稱下的cookie都應該被攜帶上來嗎?就像上面的b=level1那樣?
其實,關於這點,在cookie的rfc規範中,並沒有太明顯的說明,至少我沒有看到,即使又看了一遍rfc6265中關於domain matching的描述也是如此。
但實際的使用過程中,某個域下的cookie如果希望能夠被他的子域具有可見性(即可以讀取),必須要注意的一點是,應該保證這個cookie在被set的時候,應該以"."開頭。回到上面的例子,之所以a=level2這個cookie沒有在使用者瀏覽器請求b應用時被攜帶到b的server端,就是因為a=level2這個cookie的domain不是
.a.b.com
,而是a.b.com。
事實上,上面例子中的a應用,在向自己的網域名稱下寫入a=level2這個cookie時,壓根就沒有顯示的設定domain這個屬性,這樣一來,瀏覽器接受到這個set cookie的請求時,就會以預設以當前應用的網域名稱作為cookie的domain。(不過據說某些版本的firefox到是會自作聰明的在當前網域名稱的前面自動加上乙個點,這個待驗證!)
這乙個小點的區別,還是很容易被忽略的,不過產生的瀏覽行為還是有細微差別的。(涉及到cookie是否上傳,是否占用網路流量等)
ps:關於上面說到的那個問題,stackoverflow上的這個有個截圖,看著說明就直觀很多了。
python中關於Opencv中關於矩形的函式總結
最近處理影象,以前用的都是matlab,現在入手python比較慢,這幾天看到了很多命名和功能相似的函式,作個記錄總結一下 只是為了能夠看下函式知道它是做什麼的,因此不會對其用法說得面面俱到。看到乙個文章講得清晰詳實,分享一下 功能 計算輪廓內的面積 示例 輸入為乙個點集 contours 0 為前...
js中關於時間
1 獲取當前時間 var mydate new date mydate.getyear 獲取當前年份 2位 mydate.getfullyear 獲取完整的年份 4位,1970 mydate.getmonth 獲取當前月份 0 11,0代表1月 mydate.getdate 獲取當前日 1 31 m...
關於spring中propagation註解的問題
編寫業務邏輯方法 繼承hibernatedaosupport類,使用hibernatetemplate類持久化,hibernatetemplate 是hibernate session的封裝 預設的回滾是runtime exception 包括繼承runtimeexception的子類 普通異常不回...