2015-10-06 53 views
0

你好的开发伙伴们,的HttpCookie VS是Response.Cookie

我是小新在ASP.NET饼干工作,我道歉,如果这是一个基本的问题。所以我在我的web.config中有以下代码,我有点玩弄了解cookies。

<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"); 
    } 

现在,当我用这个代码来创建它,我得到了用户信息的cookie被固定在这种方式很好。

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

现在这是我的问题。为什么使用“Response.Cookies”默认使用web.config中的设置?如何使用HttpCookie创建cookie我必须通过在CS代码中将其设置为true来保护它。我最好的猜测是,因为我正在创建一个HttpCookie的实例,所以这就是为什么,但我希望在这方面有更进一步的方向。

非常感谢!

+0

你确定这个设置是真的需要吗? 'Secure'默认为false,是的,但[文档](https://msdn.microsoft.com/en-us/library/system.web.httpcookie.secure%28v=vs.110%29.aspx)建议所有cookie都通过SSL传输,如果web.config如此说明,除非在代码中明确覆盖。所以,即使'Secure'最初是错误的,只要你没有明确运行'Secure = false',你应该没问题。 – Andrei

+0

@Andrei有趣。我不知道为什么,但是当我使用HttpCookie创建cookie时,“安全”未显示为真。我想可能通过HttpCookie创建cookie可能是我实例化它的原因,但我不确定是否是这种情况。 –

+0

确切的说,它不会是真的,默认值是false。但关键在于,只要你的代码没有明确地设置“false”,cookie将是安全的,因为web.config这样说。执行'HttpCookie'可能会以某种方式检测显式覆盖 – Andrei

回答

0

为什么使用“Response.Cookies”默认使用 web.config中的设置?

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

假设饼干当你调用

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

该Cookie为您创建和分配的价值,但给予您在指定的默认不存在:

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

然而,如果您要实例化,因为您已经指出并将其添加到集合中,它将使用那些手动设置的值,在new HttpCookie的情况下,Secure属性默认值为false;

如Cookies集合docs

指定您可以近距离和个人与HttpCookieCollection代码,以及看到更多的“为什么”。

相关问题