HTTPOnly将cookie过期设置为会话

时间:2012-03-10 19:26:38

标签: c# .net cookies httponly

我正在编写一个“记住我的用户名”Cookie,该Cookie会在自定义的持续时间内到期,例如一个月。我注意到当我添加HttpOnly = true时,到期会更改为session。为什么是这样?我似乎无法找到有关为什么会发生这种情况的任何文档。

感谢。

2 个答案:

答案 0 :(得分:1)

Here是文档。

  

如果cookie具有HttpOnly属性且无法访问,则为true   通过客户端脚本;否则,错误。默认值为false。

基本上,它变成了一个会话变量,因为它只会因你的设置

而存储在服务器上

答案 1 :(得分:0)

我正在添加以下代码:此外,现在我的行​​为与标题不同。我在本地对VS2010内置服务器运行。它似乎表现出不一致的行为。我会在Expires之前和之后移动HttpOnly = true,它似乎改变了行为,直到刷新浏览器页面。所以,我假设一切都很好,从来没有问题。另外,我正在将HttpOnly和Secure标志移动到web.config,因为并非所有环境都有SSL。


FormsAuthenticationTicket ticket = new FormsAuthenticationTicket
                                                (strUserID, //name
                                                 false, //IsPersistent
                                                 24 * 60); // 24 hours

// Encrypt the ticket.
string encryTicket = FormsAuthentication.Encrypt(ticket);

// Create the cookie.
HttpCookie userCookie = new HttpCookie("Authentication", encryTicket);
userCookie.HttpOnly = true;
Response.Cookies.Add(userCookie);

e.Authenticated = true;
if (LoginPannelMain.RememberMeSet)
{
    HttpCookie aCookie = new HttpCookie("email", strUserLogin);
    aCookie.HttpOnly = true;
    aCookie.Expires = DateTime.Now.AddYears(1);
    Response.AppendCookie(aCookie);
}
else
{
    HttpCookie aCookie = new HttpCookie("email", "");
    aCookie.HttpOnly = true;
    Response.AppendCookie(aCookie);
}