我正在通过Javascript设置一个cookie,它工作正常,但它没有采取我给予的过期时间。无论我给出什么,它都会继续获取会话值,下面是我从here
获取的代码var now = new Date();
var time = now.getTime();
var expireTime = time + 1000*60;
now.setTime(expireTime);
var tempExp = 'Wed, 31 Oct 2012 08:50:17 GMT';
document.cookie = aaa+'='+sStr+';expires='+now.toGMTString()+';path=/';
我尝试过提供硬编码值,但它仍然显示为chrome dev工具中的会话
var tempExp = 'Wed, 31 Oct 2012 08:50:17 GMT';
document.cookie = aaa+'='+sStr+';expires='+tempExp+';path=/';
知道我做错了吗?
答案 0 :(得分:37)
我认为没关系。我把时间设定为1000 * 36000。
function display() {
var now = new Date();
var time = now.getTime();
var expireTime = time + 1000*36000;
now.setTime(expireTime);
var tempExp = 'Wed, 31 Oct 2012 08:50:17 GMT';
document.cookie = 'cookie=ok;expires='+now.toGMTString()+';path=/';
//console.log(document.cookie);
}
答案 1 :(得分:19)
这是我编写另一个应用程序的函数。随意重用:
function writeCookie (key, value, days) {
var date = new Date();
// Default at 365 days.
days = days || 365;
// Get unix milliseconds at current time plus number of days
date.setTime(+ date + (days * 86400000)); //24 * 60 * 60 * 1000
window.document.cookie = key + "=" + value + "; expires=" + date.toGMTString() + "; path=/";
return value;
};
答案 2 :(得分:13)
使用max-age
一天创建Cookie的语法 :
string configFile = string.Concat(appName, ".config");
// Map the new configuration file.
ExeConfigurationFileMap configFileMap = new ExeConfigurationFileMap
{
ExeConfigFilename = configFile
};
var config = ConfigurationManager.OpenMappedExeConfiguration(
configFileMap,
ConfigurationUserLevel.PerUserRoamingAndLocal);
它会在24小时(1天)= 24 * 60 * 60 = 86400
删除Cookie的语法 :
document.cookie = "cookieName=cookieValue; max-age=86400; path=/;";
使用过期
var expires =(new Date(Date.now()+ 86400 * 1000))。toUTCString();
document.cookie =“cookieName = cookieValue; expires =”+ expires + 86400)+“; path = /;”
答案 3 :(得分:6)
document.cookie = "cookie_name=cookie_value; max-age=31536000; path=/";
将设置一年的值。
答案 4 :(得分:4)
像这样使用
function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie = c_name+"="+c_value+"; path=/";
}
答案 5 :(得分:2)
我想第二个Polin的答案,只是添加一件事,以防你仍然卡住。此代码确实可以设置特定的Cookie到期时间。您可能遇到的一个问题是,如果您使用Chrome并通过“http://localhost ...”或“file://”访问您的网页,则Chrome不会存储Cookie。对此的简单解决方法是使用简单的http服务器(如节点的http服务器,如果还没有),并明确导航到您的页面“http://127.0.0.1”,在这种情况下,Chrome将存储用于本地开发的cookie。这让我有点不知所措,如果你不这样做,当你在控制台或开发工具中调查时,你的expires键只会有“session”的值。
答案 6 :(得分:1)
我使用功能存储具有自定义到期时间(以天为单位)的cookie:
// use it like: writeCookie("mycookie", "1", 30)
// this will set a cookie for 30 days since now
function writeCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
答案 7 :(得分:0)
您的浏览器可能配置为仅接受会话cookie;如果是这种情况,则浏览器会将任何到期时间转换为会话,您可以更改浏览器的此设置,或尝试使用没有这种配置的其他浏览器