Cookie.Path не работает с Internet Explorer - PullRequest
2 голосов
/ 14 марта 2012

Я создаю куки во время входа в систему.Предполагается, что область действия cookie ограничена путем.

    HttpCookie cookie = new HttpCookie(cookieName);
    cookie.Expires = DateTime.Now.AddMinutes(expiryMinutes);
    cookie["username"] = username;
    SetCookieValue(cookie, "username", username);
    SetCookieValue(cookie, "password", password);
    SetCookieValue(cookie, "domain", domain);
    cookie.HttpOnly = true;
    cookie.Secure = true;
    cookie.Path = Request.Url.GetLeftPart(UriPartial.Authority);

Проблема в том, что хотя этот код отлично работает в Firefox и Chrome, он не работает в Internet Explorer (и Opera).Проблемная строка - последняя - при установке здесь параметра cookie.Path IE отбрасывает (я думаю) cookie.Я отладил это с помощью консоли Chrome, и файл cookie успешно создан с правильным путем (скажем, / application).

Что здесь может быть не так?

Ответы [ 2 ]

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

Из-за неясной ошибки в базовой реализации WinINET InternetGetCookie, IE Document.Сookie не вернет cookie, если он был установлен с атрибутом пути, содержащим имя файла.

Например, если страница устанавливает cookie на себя, например, так:

Set-Cookie: HTTPSet-PathCookie=PASS;path=/check.htm

cookie будет отправлен с HTTP-запросами, но не появится в коллекции Document.Сookie.

См. эту запись в блоге .

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

Измените

cookie.Path = Request.Url.GetLeftPart(UriPartial.Authority);

на это

cookie.Path = "/";

Я предполагаю, что вы хотите применить cookie ко всему домену.

...