无法使用 NextJS 9 的 API 路由设置 cookie
Posted
技术标签:
【中文标题】无法使用 NextJS 9 的 API 路由设置 cookie【英文标题】:Can't set a cookie using NextJS 9's API Route 【发布时间】:2019-12-24 19:42:07 【问题描述】:通常,在使用 Express 时,“res”对象中有“cookie”,因此您可以执行以下操作:
res.cookie('session', sessionCookie, options);
在 Next 9 中 NextJS 提供的 API 路由中,查看 res 时,这是不存在的。有没有办法在 Next API Route 函数中为响应对象设置 cookie?
【问题讨论】:
【参考方案1】:改编自官方 repo 中间件example,您可以通过res
设置Set-Cookie
标头,如下所示:
import serialize from 'cookie';
function (req, res)
// ...
// setHeader(headerName: string, cookies: string | string[])
// can use array for multiple cookies
res.setHeader('Set-Cookie', serialize('token', 'token_cookie_value', path: '/' ));
【讨论】:
多个 cookie 怎么样?多次这样做是否有效? @Afsanefda,您可以像这样在第二个参数中使用数组:res.setHeader('Set-Cookie', [ serialize('foo', 'bar', path: '/' ), serialize('hello', 'world', path: '/' ) ]);
hint,如果你使用 typescript,你应该安装类型定义作为开发依赖:npm i -D @types/cookie
你也可以设置 HttpOnly cookie 和 serialize('token', token, httpOnly: true ) github.com/jshttp/cookie/blob/master/index.js#L91以上是关于无法使用 NextJS 9 的 API 路由设置 cookie的主要内容,如果未能解决你的问题,请参考以下文章
如何在 NextJS 中为 getStaticProps 导入 API 路由?
Nextjs 中使用 getServerSideProps 进行动态路由