内存Cookie和硬盘Cookie

内存cookie,是指没有设在cookie的Expires的属性,此时cookie将停留在客户端的内存中,只有在该IE窗口中从“文件-新建- 窗口”打开的新的IE窗和由form的target属性为_blank产生的新的IE窗口才共享同一个cookie信息。IE,Chome的选项卡都共享同一个cookie信息。

 

硬盘cookie,是指在你设置了cookie的Expires属性,此时cookie将保存到你的硬盘上,Win7是在C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Cookies 下面(如果你是Administrator账号的话)。此时所有的窗口将共享同一个名字的cookie。

 

针对内存cookie,用fiddler可以看到cookie 没有 exprires这个属性,只要关掉ie再重新打开页面将会丢失(注:如果不关掉原来的ie窗口,新打开ie访问页面cookie还是会在)。

如果内存cookie没有指定域,那么可以在多个不同的站点间共享内存cookie

 MVC测试代码 Controller 文件如下:

public ActionResult WriteCookie()
        {
            HttpCookie cookie = new HttpCookie("Name1", "Nick");
            cookie.Expires = DateTime.Now.AddDays(1);
            cookie.Domain = "MVCTest2";
            Response.Cookies.Add(cookie);

            return View();
        }

        public ActionResult ReadCookie()
        {
            if (Request.Cookies["Name1"] != null)
            {
                ViewData["Cookie1"] = Request.Cookies["Name1"].Value;
            }

            return View();
        }

        public ActionResult WriteInMemoryCookie()
        {
            HttpCookie cookie = new HttpCookie("Name2", "Nick In Memory");
            cookie.Domain = "MVCTest2";
            Response.Cookies.Add(cookie);

            return View();
        }

        public ActionResult ReadInMemoryCookie()
        {
            if (Request.Cookies["Name2"] != null)
            {
                ViewData["Cookie2"] = Request.Cookies["Name2"].Value;
            }
            return View();
        }

 

4个cshtml如下

ReadCookie.cshtml

@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <title>ReadCookie</title>
</head>
<body>
    <div>
         @if(ViewData["Cookie1"]==null) {
        
        <text>No Cookie exists. </text>
            }
            else {
                <text>Cookie</text> @ViewData["Cookie1"].ToString();
            }
    </div>
</body>
</html>

 

ReadInMemoryCookie.cshtml

@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <title>ReadInMemoryCookie</title>
</head>
<body>
    <div>
        @if(ViewData["Cookie2"]==null) {
        
        <text>No In Memory Cookie exists. </text>
            }
            else {
                <text>In Memory Cookie</text> @ViewData["Cookie2"].ToString();
            }
    </div>
</body>
</html>

 

WriteCookie.cshtml

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <title>Cookie</title>
</head>
<body>
    <div>
        Write Cookie Successfully.
    </div>
</body>
</html>

 

WriteInMemoryCookie.cshtml

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <title>WriteInMemoryCookie</title>
</head>
<body>
    <div>
         Write In-Memory Cookie Successfully.
    </div>
</body>
</html>

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值