使用next js和express时如何去掉浏览器中的cookie

问题描述 投票:0回答:1

我正在开发这个项目,该项目使用 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。如何在浏览器中删除它?谢谢!

  1. 尝试拦截 axios 响应并尝试将其删除,但没有任何反应
  2. 尝试访问下一个js中间件中的响应但失败,因为我认为它只运行在url中访问的内容。
  3. 尝试在nextjs路由处理程序中设置cookie,但它仅在直接在浏览器中访问api时删除授权cookie
    http://localhost:300/api/todos
    ,但当通过fetch()在服务器组件中访问时,它不会删除cookie而仅返回json。
express next.js cookies axios jwt
1个回答
0
投票

在 Next.js 中使用服务器组件时,您无法直接从服务器端代码与浏览器的 cookie 进行交互。服务器组件运行在服务器上,它们无法直接访问客户端浏览器环境或其 cookie。

要在 Next.js 中使用服务器组件时从浏览器中删除授权 cookie,您需要依赖后端(Express)来处理 cookie 删除并发送适当的响应标头。

© www.soinside.com 2019 - 2024. All rights reserved.