天天看點

js-cookie 無法設定cookie_HTTP總結(五):Cookie、Session

Cookie

Cookie是在服務端傳回資料的時候,通過Set-Cookie這個header設定到浏覽器裡面,儲存到浏覽器裡面的内容。

浏覽器儲存了這個Cookie之後,在下次同域的請求當中,就會帶上這個Cookie,可以實作使用者在通路這個網站的會話當中,通過Cookie一直在傳輸的内容,保證我們傳回的内容是這個使用者的。

下次請求就會自動帶上

鍵值對的形式儲存,可以設定多個

Cookie屬性

max-age 和 expires 設定過期時間

Secure 隻在HTTPS的時候發送

HttpOnly 無法通過JS的document.cookie通路(安全性,防攻擊)禁止一些重要的資訊通過JS的當時去通路

js-cookie 無法設定cookie_HTTP總結(五):Cookie、Session
js-cookie 無法設定cookie_HTTP總結(五):Cookie、Session

啟動服務

js-cookie 無法設定cookie_HTTP總結(五):Cookie、Session
js-cookie 無法設定cookie_HTTP總結(五):Cookie、Session
js-cookie 無法設定cookie_HTTP總結(五):Cookie、Session
cookie是可以傳回多個的

傳數組來儲存多個cookie

js-cookie 無法設定cookie_HTTP總結(五):Cookie、Session
js-cookie 無法設定cookie_HTTP總結(五):Cookie、Session
js-cookie 無法設定cookie_HTTP總結(五):Cookie、Session

cookie是存在時效的,如果沒有給他設定一個過期時間,那麼浏覽器關閉後就沒有了。

js-cookie 無法設定cookie_HTTP總結(五):Cookie、Session

cookie設定了過期時間以後,過了以後,就沒了。expires是到了這個時間點。

設定HttpOnly屬性,

js-cookie 無法設定cookie_HTTP總結(五):Cookie、Session
js-cookie 無法設定cookie_HTTP總結(五):Cookie、Session

列印出來的便沒有age=18。

js-cookie 無法設定cookie_HTTP總結(五):Cookie、Session
cookie的通路權限的域的設定:domain

一般來說,目前域寫了cookie之後,其他域是不能通路的。對于同一個域名,cookie也有限制方案,比如http://a.com有個二級域名http://a.xxx.com我們有辦法讓這個二級域名通路到http://a.com的cookie。就是通過domain這種方式來實作。

js-cookie 無法設定cookie_HTTP總結(五):Cookie、Session

去Chrome裡面添加個工具

js-cookie 無法設定cookie_HTTP總結(五):Cookie、Session

然後,做個映射。

js-cookie 無法設定cookie_HTTP總結(五):Cookie、Session

這時候我們再啟動伺服器,浏覽器輸入http://a.xxx.com:8888 就會映射到127.0.0.1:8888

js-cookie 無法設定cookie_HTTP總結(五):Cookie、Session

再添加個http://b.xxx.com,也映射到127.0.0.1

js-cookie 無法設定cookie_HTTP總結(五):Cookie、Session

這時候通路http://b.xxx.com

js-cookie 無法設定cookie_HTTP總結(五):Cookie、Session

在http://a.xxx.com是有cookie的,但是在http://b.xxx.com中是沒有cookie的。不同域名之間的cookie是不能共享的。但是他們都有http://xxx.com這個二級域名,如要一級域名下所有http://xxx.com這個二級域名都可以通路cookie。

在同一個主域名下,二級域名是可以共享cookie的。

js-cookie 無法設定cookie_HTTP總結(五):Cookie、Session

Session

在網站開發中,最常用的就是使用cookie來保證session。

經常會做的是把使用者登入後的一個id,給設定到cookie裡面。根據這個id來搜尋使用者的資訊。為了保證安全,可以把這個id轉換為一個對應的key,隻要能保證定位到使用者,就是session的一種實作方案。