get处理后面加上搜索参数?action=set为设置cookie ?action=get为获取cookie
// app/api/user/route.js
import { NextResponse } from "next/server";
export async function GET(request) {
const { searchParams } = new URL(request.url);
const action = searchParams.get('action');
// console.log(action);
// 创建响应对象
const response = NextResponse.json({ message: "Cookie action completed" });
// 根据 action 参数来执行不同的操作
if (action === "set") {
console.log('action=set');
// 设置 Cookie
const token = 'your_jwt_token';
response.cookies.set('token', token, {
httpOnly: true, // 只能通过 HTTP 请求访问
secure: process.env.NODE_ENV === 'production', // 仅在生产环境下使用 Secure
sameSite: 'Strict', // 防止跨站请求伪造
maxAge: 60 * 60 * 24, // 设置过期时间为 1 天
path: '/',
});
// 设置完成后返回响应
return response;
}
if (action === "get") {
// 读取 Cookie
const cookies = request.cookies;
const token = cookies.get('token');
if (token) {
// 如果 token 存在,返回带有 token 的响应
// 拿到token
return NextResponse.json({token})
} else {
// 如果 token 不存在,返回错误信息
return NextResponse.json({message:"token不存在"});
}
}
if (action === "delete") {
// 删除 Cookie
response.cookies.set('token', '', { maxAge: 0 });
// 返回删除后的响应
return response;
}
// 如果没有匹配的 action 参数,默认返回消息
return response;
}