在逛網拍開心瞎拚時,伺服器怎麼知道你是誰、你喜歡什麼、你買了什麼呢?
此時需要一些能夠讓伺服器辨別「你是誰」、「你喜歡什麼」、「你做了什麼」的機制,這些機制可以儲存在使用者端中,方便之後使用。
document.cookie
Set-Cookie
因為談的是前端,所以以下介紹如何用 JavaScript 設定 cookie:
// 語法
// 讀取所有可從此訪問的 cookie
allCookies = document.cookie;
// 設定一個 cookie
document.cookie = newCookie;
參數說明
key=value
。是鍵值對(key-value pair)形式的字串 ,用來設定指定的 cookie。key 為此 cookie 的名稱,可以自由設定。
encodeURIComponent(string)
處理,來消去那些不被 cookie 接受的字元(如逗號、分號或空格)。這是其中一種處理 cookie 的方法:使用正規表達式取得與設定 cookie 之 key 與 value。
token 來自後端。
const now = new Date();
const expireTime = now.getTime() + 1000 * 36000;
const expires = new Date(now.setTime(expireTime));
// tokenName 可以換成自定義的名稱
document.cookie = `tokenName=${token}; expires=${expires.toUTCString()};path=/;`;
const token = document.cookie.replace(
/(?:(?:^|.*;\s*)token\s*=\s*([^;]*).*$)|^.*$/,
"$1"
);
Web Storage API 中的 storage 介面提供了存取特定 domain session 與 locak stoarge 資料的方法,並可對新增、刪除或修改資料。
儲存方式有兩種:
屬性:
方法:
// 語法(部分)
localStorage.setItem("token", "abcd");
localStorage.getItem("token");
來個練習吧!例子來自 GPT
// 將資料儲存在 localStorage 中
localStorage.setItem("username", "john_doe");
// 從 localStorage 中讀取資料
const username = localStorage.getItem("username");
console.log("使用者名稱:", username);
// 移除 localStorage 中的資料
localStorage.removeItem("username");
喔耶第 29 天惹!!
參考資料