當我們給**設定cookie時,大家有沒有發現在**的其他網域名稱下也接收到了這些cookie。這些沒用的cookie看似不佔多少流量,但如果對乙個日pv千萬的站點來說,那浪費的資源就不是一點點了。因此在設定cookie時,對它的作用域一定要設定準確了。
今天我們就來**一下它的第五個引數$domain,因為它決定了cookie的作用域。
現在有如下3個網域名稱,乙個頂級網域名稱、乙個二級網域名稱和乙個**網域名稱:
① zydya.com
②blog.zyday.com
③one.blog.zyday.com
domain引數
zydya.com
blog.zyday.com
one.blog.zyday.com
setcookie('name',1,time()+1)√√
√setcookie('name',1,time()+1,'/','zyday.com')√√
√setcookie('name',1,time()
+1,'/','blog.zyday.com')××
×setcookie('name',1,time()
+1,'/','one.blog.zyday.com')××
×當domain設定為空時,domain預設為當前網域名稱,並且該網域名稱下的子網域名稱都可以接收到cookie。
但是domain引數設定其子網域名稱時,所有網域名稱就接收不到了,包括那個子網域名稱。
domain引數
zydya.com
blog.zyday.com
one.blog.zyday.com
setcookie('name',1,time()
+1)×√√
setcookie('name',1,time()+1,'/','zyday.com')√√
√setcookie('name',1,time()+1,'/','blog.zyday.com')×√
√setcookie('name',1,time()+1,'/',one.blog.zyday.com')××
×看第二行,domain引數是zyday.com,是blog.zyday.com的父網域名稱,那麼zyday.com下所有子網域名稱(包括zyday.com、blog.zyday.com、one.blog.zyday.com)都能接收到cookie。
當domain為自身網域名稱時,那麼其父網域名稱不受影響,其本身與其子網域名稱可以接收到cookie。
而設定其子網域名稱或其他網域名稱時,所有網域名稱都接收不到cookie了。
domain引數
zydya.com
blog.zyday.com
one.blog.zyday.com
setcookie('name',1,time()
+1)××√
setcookie('name',1,time()+1,'/','zyday.com')√√
√setcookie('name',1,time()+1,'/','blog.zyday.com')×√
√setcookie('name',1,time()+1,'/',one.blog.zyday.com')××
√第三個測試得出的結論在上面已經總結了。再看一遍,這裡就不多解釋了。
domain的設定,有兩點要注意:
1.在setcookie中省略domain引數,那麼domain預設為當前網域名稱。
2.domain引數可以設定父網域名稱以及自身,但不能設定其它網域名稱,包括子網域名稱,否則cookie不起作用。
那麼cookie的作用域:
cookie的作用域是domain本身以及domain下的所有子網域名稱。
Cookie的作用域
cookie 是在客戶端儲存資料,session 在服務端儲存資料 spring boot寫cookie spring boot 獲取cookie get public string readcookie cookievalue value username defaultvalue atta st...
JSP的作用域與COOKIE
儲存資料 setattribute 鍵 值 獲取資料 getattribute 鍵 page的作用域在當前頁面之間的資料共享,主要針對包含頁面 include 指令 補充 include指令是將乙個jsp頁面包含到另乙個jsp頁面中,語法 includefile 要包含的頁面路徑 request請求...
Javascript的作用域域作用域鏈的理解
如何解析一段可執行 分了兩個階段 解析 和執行 其中解析 可以理解為記名字,就是先把關鍵字var和function定義的變數名登記了下來,這也就有了變數提公升這一說。在執行 階段才是真正的執行賦值,運算等操作。暫不解析這幾個名詞,先來看乙個例子。var scope global function f...