You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

js-cookie如何读取Cookie的expires属性并用于条件判断

核心原因

别白费功夫试了,Cookies.get()从设计上就拿不到expires、path这类Cookie属性——这不是库的bug,是浏览器本身的安全限制:前端JS通过document.cookie只能拿到Cookie的键和值,所有元属性(过期时间、作用路径、域名、Secure、HttpOnly标记等)前端根本读不到。
你写的Cookies.get(['expires'])完全是用错了API:给get传数组是批量取多个Cookie值的写法,比如传['a','b']会返回a、b两个Cookie的值组成的对象,和读属性半毛钱关系没有。

可行解决方案

根据你的使用场景选对应方案即可:

  • 场景1:Cookie是你自己在当前前端逻辑里主动设置的,后续同一段逻辑里要用到设置时的属性值
    直接把设置Cookie的配置对象单独存成变量,后续要取属性直接读这个变量就行,示例代码:
    // 单独存配置对象
    const cookieOpt = { expires: 30, path: '/' };
    Cookies.set('newsletter', 'show', cookieOpt);
    const myCookie = Cookies.get('newsletter');
    
    if(myCookie){
      // 直接从存好的配置里拿expires值
      const expiresVal = cookieOpt.expires;
      console.log(expiresVal); // 输出30
      // 后续条件判断直接基于这个值写就行
    }
    
  • 场景2:需要跨页面/跨脚本获取之前设置的Cookie属性,或者要读后端种下的Cookie的过期时间
    前端没有原生方法可以直接读取,两种可落地的方式:
    1. 设置Cookie时把需要用到的属性值直接序列化存入Cookie的value中,读取时解析value拿到对应值,示例:
    const expireDays = 30;
    const expireTimestamp = Date.now() + expireDays * 24 * 60 * 60 * 1000;
    // 把业务值和需要用到的属性一起存在Cookie值里
    Cookies.set('newsletter', JSON.stringify({
      status: 'show',
      expireAt: expireTimestamp
    }), { expires: expireDays, path: '/' });
    
    // 读取时解析
    const myCookie = Cookies.get('newsletter');
    if(myCookie){
      const cookieData = JSON.parse(myCookie);
      console.log('过期时间戳:', cookieData.expireAt);
      // 条件判断示例:判断是否距离过期不足1天
      if(cookieData.expireAt - Date.now() < 24 * 60 * 60 * 1000){
        console.log('Cookie即将过期');
      }
    }
    
    1. 如果Cookie是后端种下的,直接让后端提供对应接口返回Cookie的过期时间等属性信息。

额外提醒:document.write是已经被废弃的API,执行时会覆盖整个页面的已渲染内容,日常开发不要使用,需要输出内容优先使用DOM操作方法或者控制台打印。

内容的提问来源于stack exchange,提问作者4midori

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 02:15:39