Skip to content

Bun 提供了用於處理 HTTP 請求和響應中 cookies 的內置 API。BunRequest 對象包含一個 cookies 屬性,提供 CookieMap 用於輕松訪問和操作 cookies。當使用 routes 時,Bun.serve() 自動跟蹤 request.cookies.set 並將它們應用到響應。

讀取 cookies

使用 BunRequest 對象上的 cookies 屬性從傳入請求中讀取 cookies:

ts
Bun.serve({
  routes: {
    "/profile": req => {
      // 從請求中訪問 cookies
      const userId = req.cookies.get("user_id");
      const theme = req.cookies.get("theme") || "light";

      return Response.json({
        userId,
        theme,
        message: "個人資料頁面",
      });
    },
  },
});

設置 cookies

要設置 cookies,使用 BunRequest 對象上 CookieMapset 方法。

ts
Bun.serve({
  routes: {
    "/login": req => {
      const cookies = req.cookies;

      // 使用各種選項設置 cookie
      cookies.set("user_id", "12345", {
        maxAge: 60 * 60 * 24 * 7, // 1 周
        httpOnly: true,
        secure: true,
        path: "/",
      });

      // 添加主題偏好 cookie
      cookies.set("theme", "dark");

      // 請求中修改的 cookies 會自動應用到響應
      return new Response("登錄成功");
    },
  },
});

Bun.serve() 自動跟蹤請求中修改的 cookies 並將它們應用到響應。

刪除 cookies

要刪除 cookie,使用 request.cookiesCookieMap)對象上的 delete 方法:

ts
Bun.serve({
  routes: {
    "/logout": req => {
      // 刪除 user_id cookie
      req.cookies.delete("user_id", {
        path: "/",
      });

      return new Response("已成功登出");
    },
  },
});

刪除的 cookies 會成為響應上的 Set-Cookie 頭,maxAge 設置為 0value 為空。

Bun學習網由www.bunjs.com.cn整理維護