摘要:假設(shè)有兩個(gè)域名域名域名域名有分級(jí)的概念,也就是說(shuō)域名與域名都是的子域名,又是的子域名在域名所使用的服務(wù)中,可以設(shè)置域名在服務(wù)端設(shè)置的時(shí)候,設(shè)置為或沒(méi)有區(qū)別,注意前面的點(diǎn),即只要是為顯式的聲明,前面帶不帶點(diǎn)沒(méi)有區(qū)別。
1 Cookie簡(jiǎn)介
Cookie是由W3C組織提出,最早由NetScape社區(qū)發(fā)展的一種機(jī)制。Cookie是存儲(chǔ)于訪問(wèn)者的計(jì)算機(jī)中的變量。每當(dāng)同一臺(tái)計(jì)算機(jī)通過(guò)瀏覽器請(qǐng)求某個(gè)頁(yè)面時(shí),就會(huì)發(fā)送這個(gè)cookie。其實(shí)cookie是一個(gè)很小的文本文件,是瀏覽器儲(chǔ)存在用戶的機(jī)器上的。Cookie是純文本,沒(méi)有可執(zhí)行代碼。儲(chǔ)存一些服務(wù)器需要的信息,每次請(qǐng)求站點(diǎn),會(huì)發(fā)送相應(yīng)的cookie,這些cookie可以用來(lái)辨別用戶身份信息等作用。cookie可以包含任意的信息,客戶端會(huì)記錄服務(wù)器返回來(lái)的Set-Cookie首部中的cookie內(nèi)容。并將cookie存儲(chǔ)在瀏覽器的cookie數(shù)據(jù)庫(kù)中,當(dāng)用戶訪問(wèn)同一站點(diǎn)時(shí),在Cookie請(qǐng)求首部發(fā)送過(guò)去。
2 JavaScript操作cookieJavaScript 可以使用 document.cookie 屬性來(lái)創(chuàng)建 、讀取、及刪除 cookie。
JavaScript 中,創(chuàng)建 cookie 如下所示:
document.cookie="username=John Doe";
您還可以為 cookie 添加一個(gè)過(guò)期時(shí)間(以 UTC 或 GMT 時(shí)間)。默認(rèn)情況下,cookie 在瀏覽器關(guān)閉時(shí)刪除:
document.cookie="username=John Doe; expires=Thu, 18 Dec 2043 12:00:00 GMT";
您可以使用 path 參數(shù)告訴瀏覽器 cookie 的路徑,domain 參數(shù)告訴瀏覽器 cookie 的域名。默認(rèn)情況下,cookie 屬于當(dāng)前頁(yè)面。
document.cookie="username=John Doe; expires=Thu, 18 Dec 2043 12:00:00 GMT; path=/; domain= .abc.com";
在 JavaScript 中, 可以使用以下代碼來(lái)讀取 cookie:
var x = document.cookie;
document.cookie 將以字符串的方式返回所有的 cookie,類(lèi)型格式: cookie1=value; cookie2=value; cookie3=value;
3 關(guān)于cookie的domaindomain的含義為域。假設(shè)有兩個(gè)域名
域名A a.b.e.f.com.cn
域名B c.d.e.f.com.cn
域名有分級(jí)的概念,也就是說(shuō)域名A與域名B都是f.com.cn的子域名,f.com.cn又是com.cn的子域名
在域名A所使用的服務(wù)中,可以設(shè)置域名
a.b.e.f.com.cn
b.e.f.com.cn
e.f.com.cn
f.com.cn
在服務(wù)端設(shè)置domain的時(shí)候,設(shè)置domain為b.e.f.com.cn或.b.e.f.com.cn沒(méi)有區(qū)別,注意前面的點(diǎn),即只要是為cookie顯式的聲明domain,前面帶不帶點(diǎn)沒(méi)有區(qū)別。這個(gè)點(diǎn)的奧妙后面還會(huì)提到。
設(shè)置其他域名雖然可以在響應(yīng)頭中有set-cookie的頭,但是出于安全考慮,該頭會(huì)被瀏覽器忽略,并不會(huì)產(chǎn)生真實(shí)的cookie,有一點(diǎn)注意,雖然在域名上來(lái)說(shuō),f.com.cn是com.cn的子域,但是瀏覽器是不會(huì)接收domain為com.cn的cookie的,那樣互聯(lián)網(wǎng)就亂套了。
對(duì)于域名A下的cookie,域名B可以拿到e.f.com.cn,f.com.cn這兩個(gè)domain下的cookie,互聯(lián)網(wǎng)上說(shuō)的單點(diǎn)登錄,就是以這個(gè)原理實(shí)現(xiàn)的。
如果存在相同名的cookie不同domain呢?
比如域名A設(shè)置設(shè)置domain為e.f.com.cn的cookie,mykey=myvalue1。
而在域名B中設(shè)置domain為c.d.e.f.com.cn的cookie,mykey=myvalue2。
此時(shí)在域名B服務(wù)端能拿到兩個(gè)cookie都為mykey=myvalue,并不存在覆蓋一說(shuō)。
注意在域名B中如果設(shè)置domain為e.f.com.cn的cookie,mykey=myvalue3.此時(shí)會(huì)覆蓋域?yàn)閑.f.com.cn的mykey的值,即瀏覽器中,同一個(gè)域,只存在一個(gè)名為mykey的cookie。如果不顯式設(shè)置cookie,默認(rèn)當(dāng)前域名這種說(shuō)法對(duì)不對(duì)呢? 先說(shuō)第一個(gè)問(wèn)題,如果不顯示設(shè)置cookie,那么瀏覽器會(huì)生成一個(gè)只針對(duì)當(dāng)前域名的cookie,什么叫只針對(duì)當(dāng)前域名呢?如果有一個(gè)域名就是e.f.com.cn,在該域名下設(shè)置的cookie如果沒(méi)有顯示domain,在回寫(xiě)瀏覽器的時(shí)候?yàn)g覽器會(huì)特殊處理,如果是火狐,你會(huì)發(fā)現(xiàn)該cookie的信息,有一個(gè)主機(jī)項(xiàng),而域項(xiàng)消失了,在chrome中,雖然有域這個(gè)項(xiàng),但是域的前面少了一個(gè)點(diǎn),就是上面所說(shuō)的,如果顯示聲明,不管域中帶不帶點(diǎn),到chrome中,都是帶點(diǎn)存儲(chǔ)的,只有非顯式聲明域的cookie,瀏覽器存儲(chǔ)才是不帶點(diǎn)的,問(wèn)題就在這,在e.f.com.cn服務(wù)主機(jī)中生成的cookie,只有e.f.com.cn的服務(wù)器能拿到,此時(shí)子域名是拿不到這個(gè)cookie的。、
對(duì)于前后端涉及到的跨域問(wèn)題可以查找withCredentials相關(guān)資料
面試問(wèn)題經(jīng)常問(wèn)到的關(guān)于cookie的問(wèn)題 cookie與session區(qū)別 cookie與 localstorage區(qū)別
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/53866.html
摘要:假設(shè)有兩個(gè)域名域名域名域名有分級(jí)的概念,也就是說(shuō)域名與域名都是的子域名,又是的子域名在域名所使用的服務(wù)中,可以設(shè)置域名在服務(wù)端設(shè)置的時(shí)候,設(shè)置為或沒(méi)有區(qū)別,注意前面的點(diǎn),即只要是為顯式的聲明,前面帶不帶點(diǎn)沒(méi)有區(qū)別。 1 Cookie簡(jiǎn)介 Cookie是由W3C組織提出,最早由NetScape社區(qū)發(fā)展的一種機(jī)制。Cookie是存儲(chǔ)于訪問(wèn)者的計(jì)算機(jī)中的變量。每當(dāng)同一臺(tái)計(jì)算機(jī)通過(guò)瀏覽器請(qǐng)求某...
摘要:服務(wù)器生成的用以標(biāo)識(shí)客戶信息的一般被稱(chēng)為而通過(guò)一些手段獲取其它用戶的攻擊就叫劫持設(shè)置一個(gè)搞掂了 cookie history cookie最初是由網(wǎng)景公司開(kāi)發(fā)的,現(xiàn)在所有主要的瀏覽器都支持它. type cookie分為兩種:會(huì)話cookie和持久cookie. 會(huì)話cookie是一種臨時(shí)的cookie,它記錄用戶的訪問(wèn)站點(diǎn)的設(shè)置偏好.用戶在退出瀏覽器就會(huì)被刪除. 持久cookie是存...
摘要:服務(wù)器生成的用以標(biāo)識(shí)客戶信息的一般被稱(chēng)為而通過(guò)一些手段獲取其它用戶的攻擊就叫劫持設(shè)置一個(gè)搞掂了 cookie history cookie最初是由網(wǎng)景公司開(kāi)發(fā)的,現(xiàn)在所有主要的瀏覽器都支持它. type cookie分為兩種:會(huì)話cookie和持久cookie. 會(huì)話cookie是一種臨時(shí)的cookie,它記錄用戶的訪問(wèn)站點(diǎn)的設(shè)置偏好.用戶在退出瀏覽器就會(huì)被刪除. 持久cookie是存...
摘要:它的大小限制為左右,是網(wǎng)景公司的前雇員在年月的發(fā)明。字符串轉(zhuǎn)義通過(guò)來(lái)設(shè)置的有效期。和的用法和屬性允許在瀏覽器中存儲(chǔ)對(duì)的數(shù)據(jù)。用于臨時(shí)保存同一窗口或標(biāo)簽頁(yè)的數(shù)據(jù),在關(guān)閉窗口或標(biāo)簽頁(yè)之后將會(huì)刪除這些數(shù)據(jù)。是瀏覽器關(guān)閉后就立即清除。 一、localStorage、cookie、sessionStorage的區(qū)別與練習(xí) showImg(https://segmentfault.com/img/...
摘要:目的是克服由所帶來(lái)的一些限制,當(dāng)數(shù)據(jù)需要被嚴(yán)格控制在客戶端時(shí),不需要持續(xù)的將數(shù)據(jù)發(fā)回服務(wù)器。的生命周期是在僅在當(dāng)前會(huì)話下有效。但是在關(guān)閉了瀏覽器窗口后就會(huì)被銷(xiāo)毀。刪除單個(gè)數(shù)據(jù),根據(jù)鍵值移除對(duì)應(yīng)的信息。 導(dǎo)語(yǔ) 我們?cè)谧鲰?xiàng)目的時(shí)候,經(jīng)常把Cookie和Session掛在嘴邊,可實(shí)際對(duì)于他們了解的也是很少,只是會(huì)使用,但這遠(yuǎn)遠(yuǎn)不夠,熟練的掌握他們的特性才能把項(xiàng)目做的更好。下面我們就來(lái)認(rèn)識(shí)一下...
閱讀 2750·2021-11-25 09:43
閱讀 2111·2021-11-18 13:25
閱讀 4572·2021-09-22 15:52
閱讀 1870·2021-09-22 15:49
閱讀 2216·2019-08-30 15:54
閱讀 3011·2019-08-29 17:13
閱讀 2318·2019-08-29 16:54
閱讀 2259·2019-08-29 12:58