上篇文章中說:cookie必須在同一網(wǎng)站
下且cookie的path路徑為當(dāng)前url或者是當(dāng)前url的父級(jí)
時(shí)才是共享的眶痰。
具體怎么理解呢髓废?看下面解釋
首頁介紹下php中設(shè)置cookie的函數(shù)setcookie()
setcookie(name,value,expire,path,domain,secure)
image
需要注意的且常用的有倆點(diǎn)
- expire:可選。規(guī)定 cookie 的過期時(shí)間啄巧。time()+3600 將設(shè)置 cookie 的過期時(shí)間為1小時(shí)稠氮。如果這個(gè)參數(shù)沒有設(shè)置思灰,那么 cookie 將在
session
結(jié)束后(即瀏覽器關(guān)閉時(shí))自動(dòng)失效康愤。和我們上篇文章中說的一樣:如果不設(shè)置過期時(shí)間的話儡循,客戶端中expire顯示的是session。 - path:可選征冷。規(guī)定 cookie 的服務(wù)器路徑贮折。如果路徑設(shè)置為 "/",那么該cookie 將在整個(gè)域名內(nèi)有效资盅。如果路徑設(shè)置為 "/test/",那么 該cookie 將在 test 目錄下及其所有子目錄下有效踊赠,也就是/test和/test/aa目錄下有效呵扛,也就是子目錄能獲取到父級(jí)目錄的cookie,父級(jí)目錄的cookie在子目錄下共享。筐带。
默認(rèn)的路徑值是 cookie 所處的當(dāng)前目錄今穿,但我測試默認(rèn)的路徑值是 cookie 所處目錄的上級(jí)目錄
。
做幾個(gè)測試就知道了伦籍,主要測試以下幾點(diǎn)
- cookie不設(shè)置路徑蓝晒,默認(rèn)path是當(dāng)前目錄還是當(dāng)前目錄的上級(jí)目錄?
- 如果某cookie路徑設(shè)置為 "api/test"帖鸦,那么在該目錄下能夠獲取到在 /api/test 芝薇,/api和/目錄內(nèi)的cookie,這3目錄下該cookie可以共享
- 寫一個(gè)api,路由為 /api作儿。
設(shè)置一個(gè)cookie變量a,以我們上面的預(yù)測洛二,客戶端的path應(yīng)為 /
public function test(){
setcookie('a',111);
echo 1;
}
- 瀏覽器訪問該api
看到path為 /,也就是說在整個(gè)域名內(nèi)任何path的cookie都應(yīng)該能訪問該cookie變量a
image
- 在寫一個(gè)api,路由為 /api/test/cookie
設(shè)置一個(gè)cookie變量b,以我們上面的預(yù)測,該cookie變量b的path應(yīng)為/api/test,而且應(yīng)該包含path為/api/test,/api和/的cookie變量晾嘶,也就是包含我們上面設(shè)置的cookie變量a
public function cookie(){
setcookie('b',222);
echo 2;
}
- 訪問該api
發(fā)現(xiàn)path確實(shí)/api/test,證明我么的第一個(gè)觀點(diǎn)妓雾,而發(fā)現(xiàn)能共享cookie變量a,也證明了我們的第二個(gè)觀點(diǎn)。
image
-
那么反向驗(yàn)證下垒迂,此時(shí)第一個(gè)api還是只能訪問cookie變量a械姻,而不能訪問cookie變量b。發(fā)現(xiàn)證明是正確的
image