HttpCookie vs Response.Cookie

时间:2015-10-06 16:51:16

标签: c# asp.net security cookies

Hello开发人员,

我在ASP.NET中使用Cookie有点新鲜,如果这是一个基本问题我会道歉。所以我在我的web.config中有以下代码,我有点想要了解cookie。

  <httpCookies httpOnlyCookies="true" requireSSL="true"/>

现在这是我的问题。我以两种方式创建了一个cookie(我需要保护它)。

我保护它的一种方法是使用此代码 -

 protected void btnSubmit_Click(object sender, EventArgs e)
    {
        HttpCookie cookie = new HttpCookie("UserInfo");
        cookie.Secure = true; // secure the cookie
        cookie["username"] = txtEmail.Text;

        if (txtEmail.Text != "")
        {
            Response.Cookies.Add(cookie);
        }

        Response.Redirect("WebForm2.aspx");
    }

现在,当我使用此代码创建它时,我得到了以这种方式保护的UserInfo cookie。

protected void btnSubmit_Click(object sender, EventArgs e)
{
     Response.Cookies["UserInfo"]["userName"] = txtEmail.Text;
}

现在这是我的问题。为什么使用&#34; Response.Cookies&#34;默认使用web.config中的设置?为什么我使用HttpCookie创建cookie时我必须通过在CS代码中将其设置为true来保护它?我最好的猜测是,因为我正在创建一个HttpCookie的实例,这就是为什么,但我想要进一步指导。

非常感谢!

1 个答案:

答案 0 :(得分:0)

  

为什么使用&#34; Response.Cookies&#34;默认使用中的设置   WEB.CONFIG?

简单/直接的答案是设计的。

假设您致电

时cookie不存在
<div class="icons">
  <a href="#"><img src="http://lorempixel.com/256/256/abstract/2/" /></a>
</div>

为您创建Cookie并为其分配值,但会给出您在以下位置指定的默认值:

Response.Cookies["UserInfo"]["userName"] = txtEmail.Text;

但是,如果要按照已经指出的方式进行实例化并将其添加到集合中,它将使用这些手动设置的值,在<httpCookies httpOnlyCookies="true" requireSSL="true"/> 的情况下,new HttpCookie属性默认值价值是假的;

如Cookie集合docs

中所述

您可以近距离亲自了解HttpCookieCollection的代码以及更多关于&#34;为什么&#34;。