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