设置Cookie过期时间问题求助:Cookie无法按时失效
我来帮你搞定这两个Cookie的问题!你的代码里有几个关键小错误,导致了现在的状况,我们一步步来修正:
问题1:拆分设置document.cookie是无效的
你现在把Cookie的键值对、过期时间、路径分开赋值给document.cookie,这是错误的用法。每次给document.cookie赋值,都是在添加/修改一个独立的Cookie条目,而不是给同一个Cookie添加属性。所以你之前的代码相当于创建了三个无关的Cookie:my=gees、expires=xxx、path+/,这显然不是你想要的效果。
问题2:过期时间方法拼写错误
你用了date.UTCString(),但正确的方法是date.toUTCString()——少了to前缀!这个错误会导致过期时间设置完全无效,所以Cookie永远不会自动失效。
问题3:字符串拼接格式错误
拼接Cookie字符串时,每个属性之间必须用; (分号+空格)分隔,否则浏览器会把后面的内容当成Cookie值的一部分,或者直接忽略。你之前的拼接没有加规范的分隔符,才会出现只保留my=gees的情况。
修正后的完整代码
// 创建过期时间:当前时间 + 1天(86400000毫秒) let date = new Date(); date.setTime(date.getTime() + 86400000); // 正确生成符合HTTP规范的过期时间字符串 let exp = "expires=" + date.toUTCString(); // 正确的路径格式:path=/ let path = "path=/"; // 把所有属性拼接成一个完整的Cookie字符串,用; 分隔 document.cookie = `my=gees; ${exp}; ${path}`;
关键注意点总结
- 同一个Cookie的所有属性(键值对、expires、path、domain等)必须拼接在同一个字符串里,一次性赋值给
document.cookie - 过期时间必须用
toUTCString()方法生成符合HTTP规范的时间格式 - 每个Cookie属性之间一定要用
;(分号加空格)分隔,这是浏览器识别Cookie属性的标准格式
内容的提问来源于stack exchange,提问作者Chris Trebi
相关产品推荐
相关产品推荐

