npm 包 tough-cookie 使用教程

阅读时长 6 分钟读完

tough-cookie 是一个专门用于处理 HTTP cookie 的 npm 包。它支持完整的 cookie 存储、解析和序列化,并且可以很好地与 HTTP 请求库(如 axios,request 等)一起使用。本文将详细介绍如何使用这个包以及常见的使用场景。

安装

你可以通过 npm 直接安装这个包:

创建一个 CookieJar

tough-cookie 的核心是 CookieJar,它是一个完整的 cookie 存储和管理的容器,支持存储和读取多个 cookie。我们可以使用以下方式创建一个新的 CookieJar 实例:

添加 Cookie

接下来,我们可以使用 CookieJar 实例的 setCookie 方法添加新的 cookie:

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

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

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

其中,Cookie 构造函数接收一个对象作为参数,包括 cookie 的 key、value、domain 等属性。setCookie 方法可以将新的 cookie 添加到 jar 中,在第二个参数中指定该 cookie 所属的 URL。

获取 Cookie

可以使用 CookieJar 实例的 getCookies 方法获得 cookie:

其中,getCookies 方法会返回一个 promise,我们也可以使用 getCookiesSync 方法同步获取结果。返回的结果是一个数组,每个元素表示一个 cookie 对象。

序列化和反序列化

tough-cookie 还支持将 cookie 序列化为字符串格式,以及将字符串格式的 cookie 反序列化为 Cookie 对象。例如,我们可以使用以下方式将 CookieJar 对象序列化为字符串:

我们也可以使用 CookieJar.deserializeSync 将字符串反序列化为 CookieJar 对象:

示例:使用 axios 发送带 cookie 的请求

最常见的使用场景之一就是在发送 HTTP 请求时添加 cookie。我们可以使用 axios 作为 HTTP 请求库,并利用 tough-cookie 来处理 cookie。以下是一个示例代码:

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

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

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

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

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

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

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

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

其中,我们首先创建了一个 CookieJar 实例,然后通过 axios 创建了一个 HTTP 请求的实例。在请求时,我们通过 CookieJar 实例的 getCookies 方法获取当前 URL 下的 cookie,并将其格式化为 Cookie 格式的字符串,添加到请求的 headers 中。在响应时,我们从响应的 headers 中读取 cookie,将 cookie 添加到 CookieJar 实例中。这样,我们就可以在多次 HTTP 请求之间共享 cookie。

总结

tough-cookie 是一个专门用于处理 HTTP cookie 的 npm 包,它支持完整的 cookie 存储、解析和序列化,并且可以很好地与 HTTP 请求库一起使用。通过学习本文,你应该已经掌握了使用 CookieJar、Cookie 等核心概念,以及如何在实际项目中使用该包来处理 cookie。

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

纠错
反馈