cookie的作用域

2021-06-08 10:12:50 字數 2131 閱讀 7454

當我們給**設定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...