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

读取cookies

使用BunRequest对象上的cookies属性从传入的请求中读取cookie:
Bun.serve({
  routes: {
    "/profile": req => {
      // 从请求中访问cookie
      const userId = req.cookies.get("user_id");
      const theme = req.cookies.get("theme") || "light";

      return Response.json({
        userId,
        theme,
        message: "个人资料页面",
      });
    },
  },
});

设置cookies

要设置cookie,请使用BunRequest对象的CookieMap上的set方法。
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");

      // 请求中修改的cookie会自动应用到响应中
      return new Response("登录成功");
    },
  },
});
Bun.serve() 自动跟踪请求中修改的cookie并将它们应用到响应中。

删除cookies

要删除cookie,请在请求的request.cookies (CookieMap)对象上使用delete方法:
Bun.serve({
  routes: {
    "/logout": req => {
      // 删除user_id cookie
      req.cookies.delete("user_id", {
        path: "/",
      });

      return new Response("退出成功");
    },
  },
});
删除的cookie将成为响应上的Set-Cookie头,其中maxAge设置为0value为空。