我在创建HttpOnly cookie时遇到问题,我使用以下代码来创建新cookie:
//A.aspx
HttpCookie ht = new HttpCookie("www");
ht.Value = "www";
ht.Name = "www";
ht.HttpOnly = true;
ht.Expires = DateTime.Now.AddDays(1);
Response.AppendCookie(ht);
Response.Redirect("B.aspx");
//B.aspx
HttpCookie cookie = Request.Cookies["Allowed"];
HttpCookie htt = Request.Cookies["www"];
if (cookie != null)
{
Response.Write(cookie.HttpOnly);
Response.Write(htt.HttpOnly);
}
else
{
cookie = new HttpCookie("Allowed");
cookie.HttpOnly = true;
cookie.Value = "ping";
cookie.Expires = DateTime.Now.AddMinutes(2);
Response.Cookies.Add(cookie);
Response.Write(cookie.HttpOnly);
Response.Write(htt.HttpOnly);
}问题是,尽管HttpOnly属性设置为True,但最终结果始终是:False。
有人能给我解释一下这个问题吗?
谢谢
发布于 2011-05-01 01:11:24
浏览器不会将Cookie参数(过期日期、路径、HttpOnly等)发送回服务器,而只是将值发送回服务器。把它们送回去只会带来不必要的臃肿。因此,Request.Cookies中的cookies将只包含名称和值。
如果您想查看cookie值是否生效,请使用Firecookie或类似的工具来检查HttpOnly。或者尝试在JavaScript中访问它们--这就是它应该阻止的。
https://stackoverflow.com/questions/5843291
复制相似问题