2015-10-06 50 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代碼,以及看到更多的「爲什麼」。

相關問題