使会话 cookie 在 2 年内过期

Posted

技术标签:

【中文标题】使会话 cookie 在 2 年内过期【英文标题】:making a session cookie expire in 2 years 【发布时间】:2018-04-14 07:38:32 【问题描述】:

我有以下脚本来设置 cookie 并将值提取到表单中。我正在努力将到期日期设置为 2 年?

      // Parse the URL
      function getParameterByName(name) 
      name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
      var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
      results = regex.exec(location.search);
      return results === null ? "" : 
      decodeURIComponent(results[1].replace(/\+/g, " "));
      

      // Give the URL parameters variable names
      var source = getParameterByName('utm_source');
      var keyword = getParameterByName('keyword');
      var medium = getParameterByName('utm_medium');
      var campaign = getParameterByName('utm_campaign');
      var _ga = getParameterByName('_ga');
      var gclid = getParameterByName('gclid');
      var clientId = getParameterByName('clientId');

      // Set the cookies
      if(Cookies.set('utm_source') == null || Cookies.set('utm_source') == 
      "")  
      Cookies.set('utm_source', source,  path: ''); 
      
      if(Cookies.set('keyword') == null || Cookies.set('keyword') == "") 
      Cookies.set('keyword', keyword,  path: '' );
      
      if(Cookies.set('utm_medium') == null || Cookies.set('utm_medium') ==                     
      "") 
      Cookies.set('utm_medium', medium,  path: '' );
      
      if(Cookies.set('utm_campaign') == null || Cookies.set('utm_campaign') 
      == "") 
      Cookies.set('utm_campaign', campaign,  path: '' );
      
      if(Cookies.set('_ga') == null || Cookies.set('_ga') == "") 
      Cookies.set('_ga', _ga,  path: '' );
      
      if(Cookies.set('gclid') == null || Cookies.set('gclid') == "") 
      Cookies.set('gclid', gclid,  path: '' );
      
      if(Cookies.set('clientId') == null || Cookies.set('clientId') == "") 
      Cookies.set('clientId', clientId,  path: '' );
      

      // Grab the cookie value and set the form field values
      $(document).ready(function()
      $("input[name=utm_source]:hidden").val(source);
      $("input[name=keyword]:hidden").val(keyword);
      $("input[name=utm_medium]:hidden").val(medium);
      $("input[name=gclid]:hidden").val(gclid);
      $("input[name=utm_campaign]:hidden").val(campaign);
      $("input[name=_ga]:hidden").val(_ga);
      $("input[name=clientId]:hidden").val (clientId);
      );
     </script>

谢谢 - 上述一切都按预期工作,但我很难将 cookie 设置为在两年内过期 - 我尝试了各种 [expires] 但无济于事。

【问题讨论】:

if() 条件句中使用set() 没有意义 这是否意味着如果 cookie 'clientId' 为空(不存在)然后设置 cookie clientId。最后一节“Cookies.set('clientId', clientId, path: '' );”是name,value从参数中获取并添加路径? 不...不是这个意思。使用get()检查值 【参考方案1】:

如果有人需要知道的话,这就是答案...我只是展示了第一个 utm_source 的答案,但他们都会效仿

   if(Cookies.set('utm_source') == null || Cookies.set('utm_source') == "") 
    
   Cookies.set('utm_source', source,  path: '');
   var myDate = new Date();
   myDate.setMonth(myDate.getMonth() + 24);
   document.cookie = 'utm_source' +"=" + source + ";expires=" + myDate
              + "path=/";
   

【讨论】:

以上是关于使会话 cookie 在 2 年内过期的主要内容,如果未能解决你的问题,请参考以下文章

过期时间为“会话结束”的 cookie 啥时候过期?

浏览器会话结束时 Cookie 过期

当会话 cookie 在 Laravel 中过期时重新加载站点

Tomcat 会话 cookie 不会过期

将cookie设置为在会话结束时过期?网

PHP会话cookie在浏览器关闭时过期