关于javascript:现代JavaScript高级教程Cookie-Session-SessionStorage-LocalStorage

点击在线浏览,体验更好 链接
古代JavaScript高级小册 链接
深入浅出Dart 链接
古代TypeScript高级小册 链接

详解Cookie, Session, SessionStorage, LocalStorage

引言

在Web开发中,数据的存储和治理是十分重要的。Cookie、Session、SessionStorage和LocalStorage是常见的Web存储解决方案。本文将具体介绍这些概念,比拟它们的特点和用法,并提供相干的代码示例。

1. 什么是Cookie?

属性

Cookie是一种在客户端存储数据的机制,它将数据以键值对的模式存储在用户的浏览器中。Cookie具备以下属性:

  • 名称和值:每个Cookie都有一个名称和对应的值,以键值对的模式示意。
  • 域(Domain):Cookie的域属性指定了能够拜访Cookie的域名。默认状况下,Cookie的域属性设置为创立Cookie的页面的域名。
  • 门路(Path):Cookie的门路属性指定了能够拜访Cookie的门路。默认状况下,Cookie的门路属性设置为创立Cookie的页面的门路。
  • 过期工夫(Expires/Max-Age):Cookie的过期工夫属性指定了Cookie的有效期限。能够通过设置ExpiresMax-Age属性来定义过期工夫。过期工夫能够是一个具体的日期和工夫,也能够是一个从以后工夫开始的时间段。
  • 安全标志(Secure):Cookie的安全标志属性指定了是否只在通过HTTPS协定发送申请时才发送Cookie。
  • 同站点标记(SameSite):Cookie的同站点标记属性指定了是否限度Cookie只能在同一站点发送。能够设置为Strict(仅容许来自以后站点的申请携带Cookie)或Lax(容许局部跨站点申请携带Cookie)。

利用场景

Cookie在Web开发中有多种利用场景,包含:

  • 会话治理:Cookie罕用于存储会话标识符,以便在用户拜访不同页面时放弃会话状态。
  • 身份验证:Cookie能够用于存储用户的身份验证凭证或令牌,以便在用户下次访问时主动登录。
  • 个性化设置:Cookie能够用于存储用户的个性化首选项,例如语言偏好、主题设置等。
  • 追踪和剖析:Cookie能够

用于追踪用户的行为和进行网站剖析,例如记录用户拜访的页面、点击的链接等。

以下是一个应用JavaScript创立和读取Cookie的示例:

// 设置Cookie
document.cookie = "username=John Doe; expires=Fri, 31 Dec 2023 23:59:59 GMT; path=/; secure; SameSite=Strict";

// 读取Cookie
const cookies = document.cookie.split("; ");
for (let i = 0; i < cookies.length; i++) {
  const cookie = cookies[i].split("=");
  const name = cookie[0];
  const value = cookie[1];
  console.log(name + ": " + value);
}

2. 什么是Session?

属性

Session是一种在服务器端存储和跟踪用户会话状态的机制。Session具备以下属性:

  • 存储地位:Session数据存储在服务器端的内存或长久化介质中,而不是存储在客户端。
  • 会话ID:每个会话都有一个惟一的会话ID,用于标识该会话。会话ID通常通过Cookie或URL参数发送给客户端,并在后续申请中用于辨认会话。
  • 过期工夫:Session能够设置过期工夫,以管制会话的有效期。过期工夫能够是一个具体的日期和工夫,也能够是一个从会话创立时开始的时间段。
  • 安全性:Session的会话ID须要进行爱护,以避免会话劫持和其余平安问题。

利用场景

Session在Web开发中有多种利用场景,包含:

  • 用户身份验证:Session用于存储用户的身份验证状态,以便在用户拜访须要验证的资源时进行验证。
  • 购物车:Session用于存储用户的购物车内容,以便在用户进行结账或持续购物时放弃购物车状态。
  • 个性化设置:Session能够用于存储用户的个性化首选项,例如语言偏好、主题设置等。

以下是一个应用Express.js解决Session的示例:

const express = require("express");
const session = require("express-session");

const app = express();

app.use(session({
  secret: "mysecret",
  resave: false,
  saveUninitialized: true,
  cookie: { secure: true, sameSite: "strict", httpOnly: true }
}));

app.get("/", (req, res) => {
  req.session.username = "John Doe";
  res.send("Session is set.");
});

app.get("/profile", (req, res) => {
  const username = req.session.username;
  res.send("Welcome, " + username);
});

app.listen(3000, () => {
  console.log("Server is running on port 3000");
});

3. 什么是SessionStorage?

属性

SessionStorage是一种在客户端存储长期数据的机制。SessionStorage具备以下属性:

  • 存储地位:SessionStorage数据存储在客户端的内存中,与以后会话关联。
  • 会话范畴:SessionStorage数据仅在浏览器会话期间保留,当用户敞开标签页或浏览器时数据将被革除。
  • 域和协定限度:SessionStorage数据只能在同一域和协定下拜访。

利用场景

SessionStorage在Web开发中有多种利用场景,包含:

  • 长期数据存储:SessionStorage可用于在页面之间传递长期数据,例如表单数据、长期状态等。
  • 表单数据保留:SessionStorage可用于保留用户填写的表单数据,以便在刷新页面或返回页面时复原数据,避免数据失落。
  • 单页利用状态治理:在单页利用中,能够应用SessionStorage来存储和治理利用的状态,例如以后选中的标签、开展/收起的面板等。

以下是一个应用JavaScript操作SessionStorage的示例:

// 设置SessionStorage
sessionStorage.setItem("username", "John Doe");

// 读取SessionStorage
const username = sessionStorage.getItem("username");
console.log(username);

4. 什么是LocalStorage?

属性

LocalStorage是一种在客户端存储持久性数据的机制。LocalStorage具备以下属性:

  • 存储地位:LocalStorage数据存储在客户端的长久化介质中,与浏览器相关联。
  • 持久性:LocalStorage数据不受会话完结或浏览器敞开的影响,会始终保留在浏览器中,除非被显式删除。
  • 域和协定限度:LocalStorage数据只能在同一域和协定下拜访。

利用场景

LocalStorage在Web开发中有多种利用场景,包含:

  • 本地数据存储:LocalStorage可用于在客户端存储持久性数据,如用户首选项、缓存的数据等。
  • 离线利用:LocalStorage可用于存储离线利用所需的资源,例如HTML、CSS和JavaScript文件,以实现离线拜访能力。
  • 单页利用状态治理:在单页利用中,能够应用LocalStorage来存储和治理利用的状态,例如以后选中的标签、开展/收起的面板等。

以下是一个应用JavaScript操作LocalStorage的示例:

// 设置LocalStorage
localStorage.setItem("username", "John Doe");

// 读取LocalStorage
const username = localStorage.getItem("username");
console.log(username);

5. Cookie vs. Session vs. SessionStorage vs. LocalStorage

属性 存储地位 生命周期 安全性 大小限度 跨域限度
Cookie 键值对 客户端 可配置 受同源策略限度 约4KB
Session 会话ID和服务器端存储 服务器端 可配置 较高(会话ID爱护)
SessionStorage 键值对 客户端 浏览器会话期间 同源 约5MB
LocalStorage 键值对 客户端 永恒(需显式删除) 同源 约5MB

Cookie、Session、SessionStorage和LocalStorage都是常见的Web存储解决方案,每种计划都有其实用的场景和特点。

  • 应用Cookie能够在客户端存储数据,实用于存储会话标识符、用户首选项和追踪用户行为等场景。
  • Session用于在服务器端存储和治理用户的会话状态,实用于身份验证、购物车和个性化设置等场景。
  • SessionStorage用于在浏览器会话期间存储长期数据,实用于传递数据、保留表单数据和单页利用状态治理等场景。
  • LocalStorage用于在客户端存储持久性数据,实用于本地数据存储、离线利用和单页利用状态治理等场景。

依据具体的需要和场景,抉择适合的存储计划能够更好地治理和应用数据。

6. 参考资料

  • MDN Web Docs – HTTP Cookies
  • MDN Web Docs – Web Storage API
  • MDN Web Docs – SameSite attribute
  • MDN Web Docs – HttpOnly attribute
  • W3Schools – JavaScript Cookies
  • W3Schools – HTML Web Storage Objects

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理