JavaScript与ASP.NET获取Cookie过期时间的变通方案

作者:异步漫步时间:2026-10-28 13:19:40浏览:435

本文指出JavaScript和动态页面无法直接获取Cookie的过期时间,因为该信息仅由浏览器管理。文章提供了在ASP.NET和JavaScript中通过额外存储Cookie值来间接记录并获取过期时间的具体代码实现与解决方案。

Cookie过期时间的获取限制

JavaScript脚本与动态网页代码均无法直接读取Cookie的过期时间。过期时间的管理完全由浏览器负责,前端脚本或后端动态页面仅能设置过期时间,无法通过document.cookie(JavaScript)或Cookie.Expires(ASP.NET)等属性反向获取已设置的过期时间。

ASP.NET中的Cookie处理示例

示例代码如下:

<%@page language="C#" Debug="true"%>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
    {
HttpCookie hc = Request.Cookies["abc"];
if (hc != null)
        {
Response.Write(hc.Expires);//0001-1-1 0:00:00
Response.End();
            
        }
    }
</script>

尽管ASP.NET中的Cookie对象包含Expires属性,但通过Response.Write输出该属性时,返回的却是0001-1-1 0:00:00(即DateTime.MinValue)。这是因为浏览器在发送Cookie数据给服务器时,并不包含过期时间信息,服务器端因此使用DateTime.MinValue来填充该属性。若必须获取Cookie的过期时间,需借助另一个Cookie值来记录对应Cookie的过期时间。具体实现如下:

JavaScript获取过期时间的变通方案

示例代码如下:

<script>
var d = new Date();
d.setHours(d.getHours() + 1); //1小时候过期
document.cookie = 'testvalue=123;expires=' + d.toGMTString(); //存储cookie值
document.cookie = 'testexp=' + escape(d.toLocaleString()) + ';expires=' + d.toGMTString(); //存储cookie过期时间,要获取testvalue这个cookie的过期时间,通过获取testexp这个cookie来实现
    
</script>
作者最新文章