在前端开发中,我们经常会涉及到客户端和服务器之间的数据传输问题。而 Cookie 和 Session 就是两种常见的机制,用于在客户端和服务器之间传递数据。下面我们就来详细介绍下 Express.js 中的 Cookie 和 Session 机制。
什么是 Cookie 和 Session
Cookie 和 Session 都是用于在客户端和服务器之间传递数据的机制,但它们的工作原理和使用方式有所不同。
Cookie
Cookie 是存储在客户端浏览器中的一小段文本信息,它通常由服务器发送给浏览器。当浏览器向同一服务器再次发起请求时,它会携带这个 Cookie,以便服务器能够识别出该请求来自哪个客户端。因此,Cookie 可以用于识别用户、保存用户偏好设置等。
Session
Session 是存储在服务器的一种数据结构,它用来跟踪用户的状态。当一个用户第一次访问网站时,服务器会为该用户创建一个唯一的 Session ID,该 ID 会在用户的整个会话期间被用来追踪用户状态。Session 可以用于在多个页面之间传递数据。
由于 Cookie 和 Session 都用于在客户端和服务器之间传递数据,因此它们经常会一起使用。
Cookie 的使用
在 Express.js 中,我们可以通过设置响应头的方式将 Cookie 发送给客户端。例如:
------------ ------------- ---- - ------------------ --------- ---------------- --- ---- ------ ---
这里的 res.cookie('name', 'value')
表示设置 Cookie,第一个参数是 Cookie 的名称,第二个参数是 Cookie 的值。接下来我们可以通过 res.cookie()
来获取设置的 Cookie:
------------ ------------- ---- - --- ----------- - ----------------- ---------------- ----- --- - - ------------- ---
这里的 req.cookies.name
表示获取名为“name”的 Cookie 的值。
除此之外,我们还可以设置过期时间、域名、路径等选项。例如:
------------ ------------- ---- - ------------------ -------- - ------- ------- --------- ---- --- ---------------- --- ---- ------ ---
这里的 maxAge
表示 Cookie 的过期时间,单位是毫秒;httpOnly
表示 Cookie 是否只能通过 HTTP 协议访问。更多选项可以参考官方文档。
Session 的使用
在 Express.js 中,我们可以使用中间件 express-session
来实现 Session 的管理。首先我们需要安装该中间件:
--- ------- --------------- ------
然后在我们的应用程序中使用它:
--- ------- - --------------------------- ----------------- ------- --- -------- ------- ------ ------------------ ---- ----
这里的 secret
表示一个加密字符串,用于加密 Session ID,以便防止 Session ID 被攻击者窃取。resave
表示强制将 Session 存储到存储器中,即使在响应之前没有任何更改。saveUninitialized
表示是否在存储器中保存未初始化的会话,这里设置为 true,表示会保存未初始化的 Session。更多选项可以参考官方文档。
接下来我们可以使用 req.session
来存储和获取 Session。例如:
------------ ------------- ---- - ---------------- - -------- ----------------- --- ---- ------ --- --------------- ------------- ---- - --- ------------ - ----------------- ----------------- ----- --- - - -------------- ---
这里的 req.session.name
表示存储一个名为“name”的 Session,值为“value”;req.session.name
表示获取名为“name”的 Session 的值。
总结
通过本文的介绍,我们了解了在 Express.js 中如何使用 Cookie 和 Session。Cookie 和 Session 都是常见的客户端和服务器之间传递数据的机制,选择合适的机制能够更好地满足我们的需求。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/64e025f0f6b2d6eab3b3d273