【问题标题】:Set a http only cookie next API设置一个 http only cookie next API
【发布时间】:2022-02-11 22:07:52
【问题描述】:

我正在尝试使用我的 nextjs api 设置一个 cookie。

我尝试做“res.cookie”(基于 expressJS),但 res.cookie 在我的 API 中显然是未定义的。 res 本身不是未定义的,只是 cookie 属性未定义。

然后我尝试了以下代码:

 import { serialize } from "cookie";
 res.setHeader(
            "Set-Cookie",
            serialize("jwt", `${response.data.access_token}`, {
                maxAge: 5000,
                expires: new Date("01 12 2021"),
                secure: true,
                httpOnly: true,
                sameSite: "lax",
            })
        );

        res.send("done"); 

这也不起作用,它没有在我的前端设置 cookie。

【问题讨论】:

    标签: node.js cookies next.js


    【解决方案1】:

    我所做的就是为我的选项添加一条路径。还必须将到期日期更改为不是过去的有效日期。

    import { serialize } from "cookie";
         res.setHeader(
                    "Set-Cookie",
                    serialize("jwt", `${response.data.access_token}`, {
                        maxAge: 5000,
                        expires: new Date("01 12 2022"),
                        secure: true,
                        httpOnly: true,
                        sameSite: "lax",
                        path : '/'
                    })
                );
    
            res.send("done"); 
    

    【讨论】:

      【解决方案2】:

      如果你想在 Next.js 中使用 API,你必须先在这个路径中创建一个文件:

      ./pages/api/file.js
      

      然后你必须在这个异步函数中添加你所有的 api 代码并添加 res,req 到它。不要忘记在函数之前导入你的库:

      import { serialize } from "cookie";
      
      export default async (req, res) => {
          res.setHeader(
              "Set-Cookie",
              serialize("jwt", `${response.data.access_token}`, {
                  maxAge: 5000,
                  expires: new Date("01 12 2021"),
                  secure: true,
                  httpOnly: true,
                  sameSite: "lax",
                  path: '/thePath',
                  domain: 'yourdomain.com'
              })
          );
      
          res.send("done");
      }
      

      【讨论】:

      • 这正是我所做的,但没有奏效。我必须将 "path" : "/" 键值添加到我的选项中
      • 是的,您必须添加路径和域。
      猜你喜欢
      • 2019-07-31
      • 1970-01-01
      • 2022-08-20
      • 2023-03-03
      • 2022-08-03
      • 1970-01-01
      • 2015-06-06
      • 1970-01-01
      • 2019-06-12
      相关资源
      最近更新 更多