2


我在创建 HttpOnly Cookies 时遇到问题,我使用以下代码创建新 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);

    }

问题是最终结果始终是 : False,尽管 HttpOnly 属性设置为True
谁能给我解释一下解决这个问题的方法?
谢谢

4

1 回答 1

4

浏览器不会将 Cookie 参数(到期日期、路径、HttpOnly 等)发送回服务器,只有值。将它们送回去只会引入不必要的膨胀。因此,其中的 cookieRequest.Cookies将仅包含名称和值。

如果您想查看您的 HttpOnly 值是否生效,请使用Firecookie或类似的东西来检查 cookie。或者尝试在 JavaScript 中访问它们——这就是它应该阻止的。

于 2011-04-30T17:11:24.197 回答