在代码中创建了cookie,从浏览器中删除了cookie,页面仍然可以读取已删除的cookie怎么样?

问题描述

| 我有以下C#代码,它将用户的网址记录在Cookie中。如果cookie已经存在,它将新值附加到以竖线字符分隔的现有值上。我的ASPX页面查找此cookie,根据管道字符将值切碎并将其绑定到网格。到目前为止,一切都很好。但是,当我在浏览器中转到“ Internet选项”并清除cookie,临时文件等并刷新页面时,页面仍可以从cookie中读取值。看来该cookie毕竟没有删除。无论如何,它都将坚持下去。是什么赋予了?如果用户从浏览器中清除cookie,则我的ASPX中的网格控件应为空。该页面未使用缓存或其他任何内容。
HttpCookie recentlyViewedCookie = Request.Cookies[\"RecentlyViewedCookie\"];
        if (recentlyViewedCookie != null)
        {
            string value = recentlyViewedCookie.Value;
            value = string.Format(\"{0}|{1}*{2}\",value,DateTime.Now.ToString(\"MM/dd/yyyy\"),Request.Url.ToString());
            recentlyViewedCookie.Value = value;
            Response.Cookies.Add(recentlyViewedCookie);
        }
        else
        {
            recentlyViewedCookie = new HttpCookie(\"RecentlyViewedCookie\");
            recentlyViewedCookie.Value = string.Format(\"{0}*{1}\",Request.Url.ToString());
            recentlyViewedCookie.Expires = DateTime.Now.AddMonths(1);
            Response.Cookies.Add(recentlyViewedCookie);
        }
感谢您的任何答案。     

解决方法

        首先,不是一个好习惯,要求您的用户清除所有cookie,以使您的页面正常运行。 其次,您没有说使用什么浏览器,因为这是浏览器的一部分,并且当您清除cookie时,您也需要关闭浏览器,或者至少没有打开页面(因为您说“刷新页面” \“)。如果您清除了Cookie,但是在浏览器中打开了该页面,则浏览器一直保留该页面的Cookie-是已完成的渲染的一部分,是该页面的javascript全局值的一部分,因此Cookie一直存在,直到您关闭AND页面为止。清除所有cookie不会清除活动内存,只需从缓存中删除所有cookie文件。 最后,我建议为您的页面流操作考虑一种不同的方法,而不是要求用户清除所有cookie。     ,        问题是此代码块:
    if (recentlyViewedCookie != null)
    {
        string value = recentlyViewedCookie.Value;
        value = string.Format(\"{0}|{1}*{2}\",value,DateTime.Now.ToString(\"MM/dd/yyyy\"),Request.Url.ToString());
        recentlyViewedCookie.Value = value;
        Response.Cookies.Add(recentlyViewedCookie);
    }
您尚未设置Cookie的到期日期。如果Cookie没有到期日期,则它是一个“会话Cookie”,并保存在内存中,直到关闭浏览器为止(它永远不会写入磁盘),因此从磁盘删除所有cookie不会影响它。 您可能会认为初始cookie创建的有效期将持续,但是事实并非如此。服务器无权访问原始Cookie,也不知道到期设置为什么。因此,它只编写了一个没有任何到期日期的set-cookie头,从而将cookie变成了会话cookie。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...