HTTP cookie是由網站發送的一小塊數據,用戶在瀏覽時將其存儲在用戶的web瀏覽器上
它以鍵值對的方式信息存儲於用戶硬盤,保存有關訪問者的信息,它既能夠在服務端設置也能夠在客戶端設置。web
cookie被設計成一個可靠的機制,能夠讓網站記住有狀態的信息(好比在網上商店裏添加的商品),或者記錄用戶的瀏覽活動(包括點擊特定的按鈕,登陸,或者記錄過去訪問過的頁面)。它們還能夠用來記住用戶以前輸入的表單字段的任意信息,好比姓名、地址、密碼和信用卡號。express
cookie的常設置的屬性:Domain、Path、Expires/Max-age、HTTP、Secure,接下來咱們以express做爲服務端來看看cookie這幾個屬性瀏覽器
Domain、Path安全
這兩個屬性表示cookies在哪一個主域下的哪一個路徑下表示cookies能夠共享。cookie
好比,我在服務端在兩個路由頁面設置cookie,當訪問/和/Child後,cookie信息是頁面共享的併發
但修改path後,只能在path設置的路徑下,能夠共享cookie,而其它頁面是不能共享。app
app.get('/Child', function(req, res, next) { res.cookie('nameChild', 'Child', { path: '/Child' }); res.render('index', { title: 'Child' }); });
Expires/Max-agedom
這個屬性表示cookie的存儲時間,存儲的單位標準是GMT,即格林威治時間。
例如設置time=1的存儲時間爲60秒網站
var date = new Date(); date.setTime(date.getTime() + 60000); document.cookie = "time=1" + ";expires=" + date.toUTCString();
max-age也是設置過時時間,可是它的單位是毫秒spa
一樣將expire設置成一個過去的時間或者講max-age=0,都可以達到刪除cookie的效果
HttpOnly和secure
這兩個屬性都是基於cookie安全的,單位都是布爾值。
設置了HttpOnly,就禁止頁面js修改cookie屬性。
設置secure爲true後,客戶端只能經過https協議才能把cookie發送到服務端
當訪問web站點的,瀏覽器首先檢索有沒有與該站點相關聯的cookie,若是有,就把cookie和併到請求頭那裏,隨http請求一併發送到服務端,服務端和客戶端均可以操做cookie,有一些操做cookie的屬性,好比domain和path限制cookie的做用範圍,Expires/Max-age決定cookie的存儲時限,HttpOnly和secure限制cookie相關安全的操做,cookie由於自身特色,適合存儲一些不敏感,容量小的數據。