我正在开发这个项目,该项目使用 nextjs app dir 作为前端,并使用 express 作为后端。 BE 返回一个用于身份验证的 jwt 令牌,并使用
res.cookie("authorization", "token")
将其放入 cookie 中。当在 next 中使用 api 并且它被客户端组件使用时,BE 首先在其中间件中检查请求,如果 cookie 仍然有效。如果它不再有效,be 将使用 res.cookie("authorization", "", { maxAge: 1 });
删除 cookie 并返回一些 json。当从浏览器发送响应时,浏览器中的授权 cookie 将被删除。
我的问题是当我使用服务器组件时。我将在服务器组件中使用 api,当 BE 中间件说 cookie 无效时,它将再次使用此
res.cookie("authorization", "", { maxAge: 1 });
并返回一些 json。但是,当浏览器收到响应时,它不会删除浏览器中的授权 cookie。如何在浏览器中删除它?谢谢!
http://localhost:300/api/todos
,但当通过fetch()在服务器组件中访问时,它不会删除cookie而仅返回json。在 Next.js 中使用服务器组件时,您无法直接从服务器端代码与浏览器的 cookie 进行交互。服务器组件运行在服务器上,它们无法直接访问客户端浏览器环境或其 cookie。
要在 Next.js 中使用服务器组件时从浏览器中删除授权 cookie,您需要依赖后端(Express)来处理 cookie 删除并发送适当的响应标头。