如何从javascript获取cookie过期日期/创建日期?

时间:2010-07-18 08:50:23

标签: javascript cookies

是否可以从javascript检索现有cookie的创建或过期日期?如果是这样的话?

7 个答案:

答案 0 :(得分:26)

这是不可能的。 document.cookie包含字符串中的信息,如下所示:

key1=value1;key2=value2;...

所以没有关于日期的任何信息。

您可以将这些日期存储在单独的cookie变量中:

auth_user=Riateche;auth_expire=01/01/2012

但是用户可以更改此变量。

答案 1 :(得分:19)

这些信息不能通过document.cookie获得,但如果您真的非常渴望它,您可以尝试通过XmlHttpRequest对象执行请求到当前页面并使用getResponseHeader()访问cookie头。

答案 2 :(得分:12)

现在可以使用2016年版本47的新Chrome更新,您可以通过资源选项卡enter image description here上的开发人员工具查看它,选择Cookie并在“Expires / Max-age”下查找Cookie过期日期

答案 3 :(得分:2)

你无法通过javascript获取cookie的截止日期,因为当你尝试从javascript中读取cookie时,document.cookie只返回cookie的名称和值

答案 4 :(得分:0)

一种可能性是删除cookie,你正在寻找到期日期并重写它。然后你就会知道失效日期。

答案 5 :(得分:0)

是的,有可能。我已将代码分成两个文件:

<强>的index.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过期提供更新的“剩余时间”,在本例中为几天。

答案 6 :(得分:0)

如果您使用的是Chrome,则可以转到“资源”标签,然后在左侧边栏中找到“Cookie”项。从那里选择您正在检查设置cookie的域名,它将为您提供与该域名相关的cookie列表及其到期日期。