使用Cloudflare Worker设置Cookie:自定义过期时间问题求助
问题根源
你的代码存在两个关键错误导致过期时间不生效:
- 使用双引号包裹
Set-Cookie字符串,无法解析模板变量${date},导致实际发送的Cookie头里Expires值是字面量${date}而非计算后的日期 - 给Expires值添加了单引号,不符合HTTP Cookie的格式规范(Expires值不需要额外引号)
修正后的代码
addEventListener('fetch', event => { event.respondWith(fetchAndApply(event.request)) }) async function fetchAndApply(request) { // 设置过期时间:示例为1天(24小时),可自行修改 const expireTime = 24 * 60 * 60 * 1000; const date = new Date(); date.setTime(date.getTime() + expireTime); let response = await fetch(request); // 克隆响应以修改头信息 response = new Response(response.body, response); // 使用反引号作为模板字符串解析变量,去掉Expires值的单引号 response.headers.set('Set-Cookie', `pricing-mode=on; Expires=${date.toUTCString()}; Path=/`); return response; }
关键说明
- 自定义过期时间:修改
expireTime的值即可,比如1周就是7 * 24 * 60 * 60 * 1000 date.toUTCString():将Date对象转换为符合HTTP规范的RFC 1123格式日期字符串,确保浏览器能正确识别过期时间- 模板字符串:必须用反引号(
)包裹,才能让JavaScript解析其中的${date.toUTCString()}`变量
内容的提问来源于stack exchange,提问作者user77619
相关产品推荐
相关产品推荐

