是否可以从 javascript 中检索现有 cookie 的创建日期或到期日期?如果是这样怎么办?
如何从javascript获取cookie到期日期/创建日期?
IT技术
javascript
cookies
2021-02-28 19:48:04
6个回答
不可能。document.cookie包含这样的字符串信息:
key1=value1;key2=value2;...
所以没有任何关于日期的信息。
您可以将这些日期存储在单独的 cookie 变量中:
auth_user=Riateche;auth_expire=01/01/2012
但用户可以更改此变量。
该信息无法通过 document.cookie 获得,但如果您真的非常渴望它,您可以尝试通过 XmlHttpRequest 对象向当前页面执行请求,并使用 getResponseHeader() 访问 cookie 标头。
您无法通过 javascript 获取 cookie 的到期日期,因为当您尝试从 javascript 读取 cookie 时,document.cookie 仅返回 cookie 的名称和值成对
对的,这是可能的。我已将代码分成两个文件:
索引.php
<?php
$time = time()+(60*60*24*10);
$timeMemo = (string)$time;
setcookie("cookie", "" . $timeMemo . "", $time);
?>
<html>
<head>
<title>
Get cookie expiration date from JS
</title>
<script type="text/javascript">
function cookieExpirationDate(){
var infodiv = document.getElementById("info");
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest;
}else{
xmlhttp = new ActiveXObject(Microsoft.XMLHTTP);
}
xmlhttp.onreadystatechange = function (){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
infodiv.innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "cookie.php", true);
xmlhttp.send();
}
</script>
</head>
<body>
<input type="button" onclick="javascript:cookieExpirationDate();" value="Get Cookie expire date" />
<hr />
<div id="info">
</div>
</body>
</html>
cookie.php
<?php
function secToDays($sec){
return ($sec / 60 / 60 / 24);
}
if(isset($_COOKIE['cookie'])){
if(round(secToDays((intval($_COOKIE['cookie']) - time())),1) < 1){
echo "Cookie will expire today";
}else{
echo "Cookie will expire in " . round(secToDays((intval($_COOKIE['cookie']) - time())),1) . " day(s)";
}
}else{
echo "Cookie not set...";
}
?>
现在,index.php 必须加载一次。通过 AJAX 请求,“获取 Cookie 过期日期”按钮将始终为您提供 cookie 过期的更新“剩余时间”,在这种情况下以天为单位。
