cookie的域是用來限制哪些域名能來通路cookie的, 解決同一個主域下的通路問題
domain是cookie的一個屬性, 表示的是cookie所在的域,預設為請求的位址
設定domain的格式如下:
document.cookie = "username=nO0b; path=/; domain=baidu.com"
這裡的域名前可以不帶點, 原因下邊會介紹
作用域:
規則是:
存取cookie
的隻能在本域名下或者子域名下才能生效
舉個小例子:
聲明三個域名:
- test.com:此為頂級域名
- article.test.com:二級域名
- passport.test.com:二級域名
- 通路test.com域名時,可以存取此域名的cookie,但是不能設定二級域名的cookie,
- 通路article.test.com域名時,可存取此域名的cookie,也可以存取頂級域名(父域名)test.com的cookie,也就說,子域名共享頂級域名(父域名)的cookie。
- 在通路article.test.com域名時,不能設定passport.test.com域名的cookie,就算設定了,浏覽器也不會生效該設定。
如果不設定cookie呢?
先說第一個問題,如果不顯式設定cookie,那麼浏覽器會生成一個隻針對目前域名的cookie
什麼叫隻針對目前域名呢?
如果有一個域名就是e.f.com.cn,在該域名下設定的cookie如果沒有顯示domain,在回寫浏覽器的時候浏覽器會特殊處理,如果是火狐,你會發現該cookie的資訊,有一個主機項,而域項消失了,在chrome中,雖然有域這個項,但是域的前面少了一個點,是以說如果顯式聲明,不管域中帶不帶點,到chrome中,都是帶點存儲的,隻有非顯式聲明域的cookie,浏覽器存儲才是不帶點的,問題就在這,在e.f.com.cn服務主機中生成的cookie,隻有e.f.com.cn的伺服器能拿到,此時子域名拿不到這個cookie。