// utils/cookie.ts /** * 获取指定名称的 Cookie 值 */ export function getCookie(name: string): string | null { const value = `; ${document.cookie}`; const parts = value.split(`; ${name}=`); if (parts.length === 2) { const raw = parts.pop()?.split(';').shift(); return raw ? decodeURIComponent(raw) : null; } return null; } /** * 设置 Cookie * @param name 名称 * @param value 值 * @param days 有效期(天),不传则为会话 Cookie */ export function setCookie(name: string, value: string, days?: number): void { let expires = ''; if (days) { const date = new Date(); date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000); expires = `; expires=${date.toUTCString()}`; } // 注意:为了安全,实际项目中可根据需要加上 Secure / SameSite 等属性 document.cookie = `${name}=${encodeURIComponent(value)}${expires}; path=/`; } /** * 删除 Cookie */ export function deleteCookie(name: string): void { document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`; } /** * 调试:打印所有可读 Cookie(非 HttpOnly) */ export function logAllCookies(): void { if (!document.cookie) return; const cookies = document.cookie.split('; ').reduce((acc, item) => { const eqIndex = item.indexOf('='); const key = item.slice(0, eqIndex); const value = item.slice(eqIndex + 1); acc[key] = decodeURIComponent(value); return acc; }, {} as Record); console.table(cookies); }