set cookie, res cookie 和 Cooki.set() (js-cookie) 有什么区别?

What is the difference between set cookie, res cookie and Cooki.set() (js-cookie)?

我正在尝试实施一个身份验证系统,但我 运行 遇到了一些问题,经过大量的故障排除后,我开始意识到我并不完全理解这三者之间的区别:

res.cookie(name, value, [options])

res.setHeader('Set-Cookie')

Cookies.set(name, value, [options]) //js-cookie npm package

我假设 res.cookie(和 res.setHeader)来自 express

Documentation for res.cookie 声明(就在 属性 table 下方)

All res.cookie() does is set the HTTP Set-Cookie header with the options provided. Any option not specified defaults to the value stated in RFC 6265.

因此,res.cookie 只是 res.setHeader 的包装器,使代码更清晰:您可以将选项作为 object 传递,而不是手动构建 header值。

这两个都是在 res(a.k.a 响应)object 上调用的,所以它是一个服务器端工具,告诉客户端“请将其放入 cookie”。

至于最后一个 Cookies.set,它打算在客户端 运行 代替。在内部,它只是 sets document.cookie 属性.

因此,如果我们构建所有提到的 cookie 设置选项的 tl;dr table,它们是:

function side needs manual formatting
res.cookie server no
res.setHeader server yes
Cookies.set client no
document.cookie = client yes