在 Web 应用中,Cookie(也称为“饼干”)是一种用于在客户端和服务器之间存储信息的机制。Node.js 提供了一个名为 “tough-cookie” 的强大库来处理 Cookie。tough-cookie 提供了一个 API,可以创建,解析和序列化 Cookie。
然而,tough-cookie 的默认存储机制是内存,这就意味着每次应用程序重新启动时,Cookie 将被重置为默认值。为了保持 Cookie 持久性,开发人员需要使用外部存储机制。tough-cookie 提供了一个称为 “FileCookieStore” 的可用选项,用于将 Cookie 保存在文件中。
然而,这个选项有一个已知的 Bug,会导致应用程序中 Cookie 的重写。解决这个问题的方法是安装一个叫做 “tough-cookie-file-store-bugfix”的 npm 包。本文将介绍如何正确地使用这个包,以确保 Cookie 存储的可靠性和安全性。
安装依赖
要使用 “tough-cookie-file-store-bugfix”,首先需要安装依赖。您需要使用 npm 安装 “tough-cookie” 和 “tough-cookie-file-store-bugfix”。
npm install tough-cookie tough-cookie-file-store-bugfix --save
初始化 FileCookieStore
安装依赖后,需要初始化 “FileCookieStore” 实例。以下示例显示如何在 Node.js 应用程序中使用 “tough-cookie-file-store-bugfix”。
var tough = require('tough-cookie'); var FileCookieStore = require('tough-cookie-file-store-bugfix'); // 设置 cookie 存储选项 var cookieJar = new tough.CookieJar(undefined, new FileCookieStore('./cookies.json'));
在此代码中,我们首先加载 “tough-cookie” 和 “tough-cookie-file-store-bugfix” 库(第 1 行和第 2 行)。接下来,我们使用 “FileCookieStore” 实例化 “CookieJar”(第 5 行)。在这里,我们提供了一个文件路径,用于保存所有的 Cookie 数据。每次需要使用 Cookie 时,这个实例将从 JSON 文件中读取数据。
使用 “tough-cookie-file-store-bugfix” 的好处是,它会确保不会出现 Cookie 重写问题。每次写入新的 Cookie 数据时,它会将所有内存中的 Cookie 与存储在文件中的 Cookie 进行比较,并确保更新文件中的数据。
使用 CookieJar
使用 CookieJar 非常容易,您可以简单地使用以下几个方法:
setCookie(cookieOrString: string | Cookie, currentUrl: string, options: CookieJar.SetCookieOptions, cb: (err: Error, cookie: Cookie) => void): void
将给定的 Cookie 存储在 CookieJar 中。
// 设置 cookie var cookie = tough.Cookie.parse('name=value; Domain=example.com; Path=/;'); cookieJar.setCookie(cookie, 'http://www.example.com/', function () { // 存储 Cookie 成功 });
getCookies(currentUrl: string, options: CookieJar.GetCookiesOptions, cb: (error: Error | null, cookies: Cookie[]) => void): void
从 CookieJar 中获取与给定 URL 相关联的 Cookie。
// 获取 cookie cookieJar.getCookies('http://www.example.com/', function (err, cookies) { if (err) throw err; // 处理 Cookie 数据 });
总结
本文介绍了如何使用 “tough-cookie-file-store-bugfix” 稳定地存储 Cookie。初始化 FileCookieStore 和使用 CookieJar 是实现此目标的关键步骤。我们还演示了如何使用 CookieJar 来添加或获取 Cookie。由于“tough-cookie-file-store-bugfix”会消除 Cookie 重写问题,这个包是保持 Cookie 持久性的首选。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055ff381e8991b448ddbe4