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