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

Rails应用中实现JavaScript创建Cookie后30分钟自动删除

给Cookie添加30分钟自动过期功能的解决方案

嘿,我帮你调整了代码,现在可以让lat_lng Cookie在创建后30分钟自动失效啦。核心是给Cookie添加expires(或者现代浏览器推荐的max-age)属性来设置过期时间。

修改后的完整代码

function getGeoLocation() { 
  navigator.geolocation.getCurrentPosition(setGeoCookie); 
}

function setGeoCookie(position) { 
  var cookie_val = position.coords.latitude + "|" + position.coords.longitude; 
  // 计算30分钟后的过期时间
  var expireTime = new Date();
  expireTime.setTime(expireTime.getTime() + 30 * 60 * 1000); // 30分钟转毫秒
  // 拼接Cookie字符串,添加expires属性
  document.cookie = "lat_lng=" + escape(cookie_val) + "; expires=" + expireTime.toUTCString(); 
}

关键改动说明

  • 计算过期时间:通过new Date()获取当前时间,用setTime()加上30分钟对应的毫秒数(30601000),得到30分钟后的时间点。
  • 转换UTC格式:Cookie的expires属性要求传入UTC格式的字符串,所以用toUTCString()把日期对象转成符合要求的格式。
  • 顺便补全了你原代码里拼接经纬度时缺失的+号,避免语法报错。

可选:用max-age更简洁(现代浏览器支持)

如果你不需要兼容IE8及更早的老旧浏览器,可以用max-age属性,直接设置过期秒数,代码会更简洁:

function setGeoCookie(position) { 
  var cookie_val = position.coords.latitude + "|" + position.coords.longitude; 
  // max-age单位是秒,30分钟=1800秒
  document.cookie = "lat_lng=" + escape(cookie_val) + "; max-age=1800"; 
}

小提醒

如果你的Rails应用对Cookie有域名或路径限制,记得在Cookie字符串末尾加上对应的; domain=你的域名或; path=/参数,确保Cookie能在预期范围内生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:23:40