你好,各位开发人员,
我对在ASP.NET中使用cookies有点陌生,如果这是一个基本问题,我很抱歉。因此,我在我的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");
}现在,当我使用这段代码创建它时,我以这种方式保护了UserInfo cookie。
protected void btnSubmit_Click(object sender, EventArgs e)
{
Response.Cookies["UserInfo"]["userName"] = txtEmail.Text;
}下面是我的问题。为什么使用"Response.Cookies“默认使用web.config中的设置?为什么当我使用HttpCookie创建一个cookie时,我必须通过在CS代码中将它设置为true来保护它?我最好的猜测是,既然我正在创建一个HttpCookie实例,这就是为什么,但我希望在这方面有进一步的方向。
非常感谢!
发布于 2015-10-06 20:56:10
为什么使用"Response.Cookies“默认使用web.config中的设置?
简单/直接的答案是,这是故意的。
假设cookie在您调用时不存在
Response.Cookies["UserInfo"]["userName"] = txtEmail.Text;cookie是为您创建的,并为其分配了值,但会给出您在以下文件中指定的默认值:
<httpCookies httpOnlyCookies="true" requireSSL="true"/>但是,如果要像前面指出的那样实例化并将其添加到集合中,它将使用那些手动设置的值,对于new HttpCookie,Secure属性默认值为false;
如Cookies集合文档中所指定的那样
您也可以密切了解HttpCookieCollection的代码,了解更多的“原因”。
https://stackoverflow.com/questions/32975393
复制相似问题