Skip to main content

Documentation Index

Fetch the complete documentation index at: https://bun.zhcndoc.com/llms.txt

Use this file to discover all available pages before exploring further.

Bun 提供了一个内置 API,用于处理 HTTP 请求和响应中的 cookies。BunRequest 对象包含一个 cookies 属性,该属性提供了一个 CookieMap,用于访问和操作 cookies。在使用 routes 时,Bun.serve() 会自动追踪 request.cookies.set,并将它们应用到响应中。

读取 cookies

通过 BunRequest 对象上的 cookies 属性读取来自请求的 cookies:
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 方法。
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 方法:
Bun.serve({
  routes: {
    "/logout": req => {
      // 删除 user_id cookie
      req.cookies.delete("user_id", {
        path: "/",
      });

      return new Response("注销成功");
    },
  },
});
被删除的 cookies 会作为 Set-Cookie 头包含在响应中,maxAge 设置为 0,值为空字符串。