UNPKG

f2e-server3

Version:

f2e-server 3.0

57 lines (56 loc) 1.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getCookie = exports.createCookie = void 0; /** * 创建一个Cookie字符串。 * @param cookie Cookie对象 * @returns 构造的Cookie字符串 */ const createCookie = (cookie) => { const base = `${encodeURIComponent(cookie.name)}=${encodeURIComponent(cookie.value)}; `; const cookieOptions = Object.entries(cookie.options || {}) .filter(([_, value]) => value !== undefined) // 过滤未定义的值 .map(([key, value]) => { if (key === 'secure' || key === 'httpOnly') { // 对于布尔值直接返回键名 return value ? key : ''; } if (key === 'expires') { // 对于expires,确保其为有效的时间戳 if (typeof value === "number" && value <= Date.now()) { return `Expires=${value}`; } } return `${key}=${value}`; }) .join('; '); return base + cookieOptions; }; exports.createCookie = createCookie; /** * 从cookie字符串中获取指定名称的cookie值。 * @param name 需要获取的cookie的名称 * @param cookieString 可选,cookie字符串,默认为空字符串 * @returns 指定名称的cookie值,若未找到则返回空字符串 */ const getCookie = (name, cookieString = '') => { if (!cookieString) { return ''; } try { const decodedCookie = decodeURIComponent(cookieString); const cookies = decodedCookie.split('; '); for (let i = 0; i < cookies.length; i++) { const [key, value] = cookies[i].split('='); if (key.trim() === name) { return value; } } } catch (error) { console.error("Error parsing cookie:", error); return ''; } return ''; }; exports.getCookie = getCookie;