yuanjing/src/utlis/cookie.ts
2026-04-17 17:41:38 +08:00

53 lines
1.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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<string, string>);
console.table(cookies);
}