Node.js 中如何使用 cookie 或 session

阅读时长 4 分钟读完

在开发 Web 应用时,经常需要在不同页面之间传递用户数据,比如用户登录状态、用户个性化设置等。客户端通过 HTTP 请求向服务端发送数据,在这个请求中,HTTP 报文头部头部部分提供了配合服务端使用的一些信息,其中就包括了 Cookie 和 Session。

Cookie

Cookie 是一种在客户端存储数据的方式。它可以存储一些简单的用户数据,比如用户身份认证等。Cookie 通常是由服务器发送,存储在客户端,并在客户端发送请求时回传给服务器。

在 Node.js 中使用 Cookie 通常需要借助第三方模块,比如 cookie-parser。下面是一个简单的使用 cookie-parser 模块的示例代码:

-- -------------------- ---- -------
----- ------- - -------------------
----- ------------ - -------------------------

----- --- - ----------

------------------------

--------------------- ------------- ---- -
  ---------------------- ------ - ------- ------- --------- ---- ---
  ---------------- ------
---

--------------------- ------------- ---- -
  ----- -------- - ---------------------
  -- ---------- -
    --------------- - ----------
  - ---- -
    -------------- ---------
  -
---

---------------- ---------- -
  ---------------- --------- -- ---- --------
---

这里使用了 cookie-parser 模块来解析请求中的 Cookie。在访问 http://localhost:3000/setCookie 时,设置了一个名为 username 的 Cookie,有效期为 900 秒。在访问 http://localhost:3000/getCookie 时,获取了 username 的值,并返回欢迎信息。

Session

Session 和 Cookie 类似,也可以存储一些用户数据。但它存储在服务端,并且可以存储更为复杂的对象。Session 通常会在客户端访问网站时生成一个 Session ID,然后在客户端和服务端之间交换这个 Session ID,以便在后续的请求中识别这个用户。

在 Node.js 中使用 Session 也需要借助第三方模块,比如 express-session。下面是一个简单的使用 express-session 模块的示例代码:

-- -------------------- ---- -------
----- ------- - -------------------
----- ------- - ---------------------------

----- --- - ----------

-----------------
  ------- --------- -----
  ------- ------
  ------------------ ----
----

---------------------- ------------- ---- -
  -------------------- - ------
  ----------------- ------
---

---------------------- ------------- ---- -
  ----- -------- - ---------------------
  -- ---------- -
    --------------- - ----------
  - ---- -
    -------------- ----------
  -
---

---------------- ---------- -
  ---------------- --------- -- ---- --------
---

这里使用了 express-session 模块来实现 Session 的处理。在访问 http://localhost:3000/setSession 时,设置了一个名为 username 的 Session。在后续的请求中,通过 req.session.username 获取到了这个 Session 的值,并返回欢迎信息。

总结

Cookie 和 Session 都是在 Web 开发中常见的数据存储方式,但它们的适用场景有所不同。一般来说,对于一些简单的数据,可以使用 Cookie 来存储,而对于一些复杂的数据,可以使用 Session 来进行处理。

无论是 Cookie 还是 Session,开发者都需要对其安全性有所了解,并做好相应的安全措施。比如设置合理的过期时间和安全标记,避免 XSS 和 CSRF 等安全攻击。

在使用 Cookie 或 Session 时,开发者也可以根据自己的需求来调整其具体的实现。比如设置不同的过期时间、设置不同的域名,等等。相信通过不断地学习和实践,开发者一定能够更好地掌握这些 Web 开发的基础技能。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64e437fcf6b2d6eab3f96774

纠错
反馈