HTTP cookie

cookie

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發送到服務端

不足

  1. cookie是明文傳輸,容易被攔截或者捕獲內容
  2. cookie容量只有4KB,容量小
  3. 每次發送cookie,cookie都被添加到request header上,意味着cookie越大,請求頭就越大,響應的時間就越長

總結

當訪問web站點的,瀏覽器首先檢索有沒有與該站點相關聯的cookie,若是有,就把cookie和併到請求頭那裏,隨http請求一併發送到服務端,服務端和客戶端均可以操做cookie,有一些操做cookie的屬性,好比domain和path限制cookie的做用範圍,Expires/Max-age決定cookie的存儲時限,HttpOnly和secure限制cookie相關安全的操做,cookie由於自身特色,適合存儲一些不敏感,容量小的數據。

相關文章
相關標籤/搜索