在 Web 應用中,Cookie 是常用的傳輸方式之一。Cookie 通常用于保存用戶的登錄狀態(tài),以及一些客戶端需要的數(shù)據(jù)。除此之外,Cookie 還可以用來傳輸 JSON 數(shù)據(jù)。
document.cookie = `data=${JSON.stringify(data)};path=/`;
上面的代碼將一個 JavaScript 對象 data 轉換成 JSON 字符串,并將其存儲在一個名為 data 的 Cookie 中。使用 encodeURIComponent() 函數(shù)對 JSON 字符串進行編碼,以避免一些特殊字符的問題。path=/ 表示該 Cookie 在整個域名下都可用。
接收方可以使用如下代碼來獲取 Cookie 中的 JSON 數(shù)據(jù):
const cookies = document.cookie.split(';');
let data = null;
for (let i = 0; i < cookies.length; i++) {
const cookie = cookies[i].trim();
if (cookie.startsWith('data=')) {
const cookieValue = decodeURIComponent(cookie.split('=')[1]);
data = JSON.parse(cookieValue);
break;
}
}
上面的代碼將所有 Cookie 分割成數(shù)組,遍歷數(shù)組查找名為 data 的 Cookie。將查找到的 Cookie 字符串用 decodeURIComponent() 解碼,然后使用 JSON.parse() 函數(shù)將其轉換成 JavaScript 對象。
需要注意的是,Cookie 只能存儲少量數(shù)據(jù)(通常只有幾 KB),所以不適合存儲大量的 JSON 數(shù)據(jù)。