news 2026/1/29 17:24:41

session cookie localStorage

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
session cookie localStorage

Session, Cookie, LocalStorage 和 Token 之间的联系与区别

1.Session

  • 定义:Session 是服务器端存储的一种信息,它用来记录用户与服务器的交互状态。在用户与网站进行交互时,服务器会创建一个 session 来存储用户的状态数据。Session ID 通常会被存储在 cookie 中。
  • 存储位置:存储在服务器端。
  • 生命周期:Session 生命周期是与用户的会话相关的。用户关闭浏览器时,Session 会被销毁。
  • 使用场景:用于存储敏感数据,比如用户登录后的身份验证信息、购物车内容等,适合需要保证安全的数据存储。
  • 安全性:由于存储在服务器端,安全性较高,但需要通过加密等方式确保 Session ID 的安全传输。

2.Cookie

  • 定义:Cookie 是由服务器发送并存储在浏览器端的小文件,用于存储一些简单的信息,如用户偏好、登录状态、追踪用户行为等。
  • 存储位置:存储在浏览器端。
  • 生命周期:Cookie 可以设置过期时间,也可以设置为会话 Cookie(当浏览器关闭时删除)。持久化 Cookie 会根据设置的过期时间存储。
  • 使用场景:用于存储非敏感的用户数据,例如用户语言偏好、登录状态、分析数据等。常用于跨会话保持用户登录。
  • 安全性:由于存储在浏览器端,容易受到 XSS 攻击,存储敏感信息时需要进行加密。

3.LocalStorage

  • 定义:LocalStorage 是 HTML5 提供的一种本地存储机制,用于在客户端存储较大容量的数据,数据在浏览器关闭后不会被清除,除非用户手动清除。
  • 存储位置:存储在浏览器端。
  • 生命周期:数据永久存储,除非手动删除或者通过 JavaScript 删除。
  • 使用场景:用于存储较大的数据,如用户偏好设置、浏览器缓存等。适用于不需要传输到服务器的数据。
  • 安全性:LocalStorage 数据存储在浏览器中,可以通过 JS 脚本进行访问。如果没有适当的安全措施(例如防止 XSS 攻击),可能会暴露敏感信息。

4.Token

  • 定义:Token(令牌)是一种用于身份验证的数字字符串,通常由服务器生成并发送给客户端。在客户端的每次请求中,Token 会作为身份验证凭证一起发送给服务器。常见的身份验证方式包括JWT(JSON Web Token)
  • 存储位置:可以存储在CookieLocalStorageSessionStorage中,具体取决于安全需求。
  • 生命周期:Token 通常是持久化的,可以有固定的过期时间,或者在客户端主动注销时删除。
  • 使用场景:用于无状态身份验证,特别适用于 RESTful API 或其他客户端-服务器交互的场景。Token 不需要服务器存储用户会话信息,因此更加轻量。
  • 安全性:Token 的安全性依赖于存储和传输方式。存储在Cookie中时可以配合HttpOnlySecure属性来提高安全性,防止被 XSS 攻击。存储在LocalStorage时,则需要特别注意 XSS 攻击的风险。

5.联系与区别

特性SessionCookieLocalStorageToken
存储位置服务器端浏览器端浏览器端浏览器端(Cookie、LocalStorage 或 SessionStorage)
生命周期会话结束后消失(浏览器关闭时删除)可设置过期时间,也可以是会话 cookie持久存储,直到用户手动清除持久存储,通常有过期时间,手动清除或过期
容量限制不受浏览器限制,服务器根据需要分配存储量较小(一般为 4 KB)存储量较大(通常为 5-10 MB)存储量根据具体实现而异
安全性安全性较高(依赖于 Session ID 的保护)可能受到 XSS 攻击,但可以设置 HttpOnly 属性不加密存储,容易暴露于恶意脚本安全性依赖于存储和传输方式,使用 HTTPS 和加密时较为安全
用途存储敏感信息,确保安全的用户会话管理存储不那么敏感的数据,如用户设置、追踪信息存储大量非敏感数据,如缓存、用户偏好用于无状态身份验证,适合 API 和跨应用认证
传输存储在服务器端,不直接传输给客户端存储在客户端,随着请求一起发送到服务器存储在客户端,不随请求发送到服务器随请求一起发送到服务器(通常放在请求头中)

6.总结

  • Session:适用于需要确保数据安全性和临时性存储的场景。数据存储在服务器端,生命周期与会话绑定。
  • Cookie:适用于跨会话存储用户数据和状态,可以跨多个页面和请求使用。应注意其安全性,避免存储敏感信息。
  • LocalStorage:适用于客户端长时间存储非敏感数据,具有较大的存储容量,但没有与服务器的直接交互。
  • Token:适用于无状态的身份验证,适合 API 和跨应用认证。可以存储在CookieLocalStorageSessionStorage中,具有较强的灵活性和可扩展性。

在实际开发中,根据数据的敏感性、大小和生命周期,选择合适的存储方式。

7.为什么登录后关闭页面,再次打开不需要重新登录?

  • 原因:这种情况通常是因为浏览器中的Cookie还在。当你登录时,服务器会在响应中发送一个cookie(通常是一个 session ID 或 token),并将其存储在浏览器中。下次打开页面时,浏览器会自动将这个cookie附带在请求中发送给服务器,从而让服务器识别出你的登录状态,避免你重新登录。

具体过程:

  1. 登录时:你输入用户名和密码,成功登录后,服务器会生成一个session IDtoken,并将其作为cookie存储在你的浏览器中。
  2. 关闭页面:虽然你关闭了页面,但是cookie存储在本地(浏览器中),并没有被删除。
  3. 重新打开页面:浏览器会自动将存储的cookie发送到服务器,服务器通过识别cookie中的内容,确认你的身份,直接将你登录状态保持下来。

cookie的存储特性:

  • 会话 cookie:这种类型的 cookie 在浏览器关闭时会自动删除,适用于临时会话。
  • 持久化 cookie:如果 cookie 设置了过期时间,它会在指定的时间之前存储在浏览器中,即使浏览器关闭后也会保存,直到过期时间到达。

如果你的登录状态持续存在,说明使用的是持久化的 cookie 或者是一个长时间有效的session

需要注意:

  1. 清除浏览器 cookie:如果你清除了浏览器中的cookie,下次访问时会要求重新登录。
  2. cookie 的安全性:为了防止被窃取,cookie 通常会设置为HttpOnlySecure,保证其只能通过 HTTP 请求传递,而不能通过 JavaScript 访问。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/26 23:44:03

MiDaS部署实战:从照片到深度图的流程

MiDaS部署实战:从照片到深度图的流程 1. 引言:AI 单目深度估计 - MiDaS 在计算机视觉领域,三维空间感知一直是实现智能交互、增强现实(AR)、机器人导航等高级应用的核心能力。然而,传统深度感知依赖双目摄…

作者头像 李华
网站建设 2026/1/20 20:55:49

隐藏 NAS DDNS 的端口,实现域名不加端口号访问NAS

一、为什么需要隐藏 NAS DDNS 的端口?​ 家用 NAS 通过 DDNS 实现外网访问时,通常需要在域名后拼接端口号(如nas.yourdomain.com:5000),存在三大痛点:​ 记忆不便:非标准端口(如 5…

作者头像 李华
网站建设 2026/1/26 22:15:04

没机器学习经验能用ResNet18吗?小白友好云端方案详解

没机器学习经验能用ResNet18吗?小白友好云端方案详解 引言:美术生也能玩转AI物体识别 作为一名美术生,当你需要为毕业设计添加酷炫的AI物体识别功能时,面对"机器学习"、"Python编程"这些专业术语是否感到无…

作者头像 李华
网站建设 2026/1/29 7:34:46

ResNet18模型可解释性:关键特征可视化工具集

ResNet18模型可解释性:关键特征可视化工具集 引言 在金融风控领域,AI模型正在承担越来越重要的决策任务。但随之而来的问题是:当AI模型拒绝一笔贷款申请或标记一笔交易为高风险时,我们如何向客户和监管机构解释这个决策&#xf…

作者头像 李华
网站建设 2026/1/18 3:16:14

ResNet18懒人方案:预装环境镜像,打开浏览器就能用

ResNet18懒人方案:预装环境镜像,打开浏览器就能用 引言:零代码体验AI图像识别 想象一下,你拍了一张照片上传到电脑,AI能立刻告诉你照片里是猫、狗还是其他物体——这就是图像识别的魅力。但对于不懂编程的普通人来说…

作者头像 李华
网站建设 2026/1/29 2:27:49

Kokkos内存模型介绍,核心概念解释

文章目录一、Kokkos 内存模型核心思想1. 执行空间(ExecutionSpace)2. 内存空间(MemorySpace)二、核心概念详解1. View(视图)2. Memory Space 与 Execution Space 的关联3. 统一虚拟内存(UVM&…

作者头像 李华