HTTPOnly устанавливает срок действия куки для сессии - PullRequest
2 голосов
/ 10 марта 2012

Я пишу файл cookie «Запомнить меня», срок действия которого истекает в течение определенного времени, например, одного месяца.Я заметил, что когда я добавляю HttpOnly = true, срок действия меняется на сеанс.Почему это?Я не могу найти документацию о том, почему это произошло.

Спасибо.

Ответы [ 2 ]

1 голос
/ 10 марта 2012

Здесь - документация.

true, если cookie имеет атрибут HttpOnly и недоступен через клиентский скрипт; иначе ложно. По умолчанию установлено значение false.

По сути, он становится переменной сеанса, потому что он будет храниться только на сервере из-за ваших настроек

0 голосов
/ 13 марта 2012

Я добавляю следующий код: Кроме того, теперь я получаю поведение, отличное от названия. Я запускаю это локально на встроенном сервере VS2010. Кажется, чтобы показать противоречивые поведения. Я переместил бы 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);
}
...