Safari 中未设置 Cookie

kev*_*vin 1 cookies safari node.js next.js

我有一个 nextjs 后端作为代理。它基本上将我的请求转发到另一个后端,并在收到响应后设置一个仅 http 的安全 cookie。这是代码:

const handler = (req: NextApiRequest, res: NextApiResponse) => {
    axios
        .post(`${process.env.NEXT_PUBLIC_API_BASE}/auth/login`, req.body)
        .then(response => {
            const expires = new Date(
                new Date().getTime() + response.data.expires_in
            );

            res.setHeader(
                "Set-Cookie",
                serialize("jwt", `${response.data.access_token}`, {
                    expires,
                    secure: true,
                    httpOnly: true,
                    sameSite: "none",
                    path: "/",
                })
            );

            res.send("succes");
        })
        .catch(err =>
            res.status(err.response.status).send({ message: err.message })
        );
};
Run Code Online (Sandbox Code Playgroud)

它在 Chrome 和 Firefox 中工作,但在 safari 中它没有设置任何 cookie。我尝试了这个samesite:none选项

kev*_*vin 5

我通过设置修复了它

secure: false,
Run Code Online (Sandbox Code Playgroud)

如果连接不是通过 https,则设置为 true 不允许您设置 cookie。由于我在本地主机上进行测试,这对我来说是一个问题。我将在生产时将其设置回 true。

  • 人们如何使用 Safari 进行开发? (2认同)