无法使用 Next.js 服务器端操作删除 cookie

han*_*ren 7 javascript cookies reactjs next.js next.js13

我正在尝试使用 Next.js 应用程序中的 next/headers 模块删除 cookie,但它似乎没有按预期工作。这是代码片段:

import {cookies} from "next/headers";
export default async function Signout() {
    async function deleteTokens() {
       "use server"

        cookies().delete('accessToken')
    }

  await deleteTokens()
  return (
      <></>
  );
}
Run Code Online (Sandbox Code Playgroud)

我期望 cookies().delete('accessToken') 行删除名为“accessToken”的 cookie,但它似乎没有任何效果。执行该函数后,cookie 仍然存在。

我收到以下错误:错误:Cookie 只能在服务器操作或路由处理程序中修改。阅读更多:https ://nextjs.org/docs/app/api-reference/functions/cookies#cookiessetname-value-options

但我已经设置了“使用服务器”并在 next.config.js 中启用了它

#使用 Next.js 13.4.4

Yil*_*maz 0

也许您需要set在操作上使用方法。从这里

很高兴知道:.set() 仅在服务器操作或路由处理程序中可用

要“删除”cookie,您必须设置一个具有相同名称和空值的新 cookie。您还可以将 maxAge 设置为 0 以立即使 cookie 过期。

相同文档中的示例:

'use server'
 
import { cookies } from 'next/headers'
 
async function create(data) {
  cookies().set({
    name: 'name',
    value: '',
    expires: new Date('2016-10-05'),
    path: '/', // For all paths
  })
}
Run Code Online (Sandbox Code Playgroud)

从这个问题来看,可能是13.4.2之后