f2e-server3
Version:
f2e-server 3.0
57 lines (56 loc) • 1.89 kB
JavaScript
;
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;