Я устанавливаю cookie с датой истечения срока действия через ASP.NET, используя код, подобный этому
System.Web.Security.FormsAuthenticationTicket ticket = new System.Web.Security.FormsAuthenticationTicket(1, uname, DateTime.UtcNow, DateTime.UtcNow.AddDays(30), bool_persist, "some custom string data here");
string encrypted_ticket = System.Web.Security.FormsAuthentication.Encrypt(ticket);
HttpCookie auth_cookie = new HttpCookie(System.Web.Security.FormsAuthentication.FormsCookieName, encrypted_ticket);
auth_cookie.HttpOnly = true;
if (persist) //passed in to method as parameter
{
auth_cookie.Expires = DateTime.UtcNow.AddDays(30);
}
auth_cookie.Domain = ".mydomainname.com";
Response.Cookies.Set(auth_cookie);
Я дополнительно устанавливаю другой cookie в том же запросе, чтобы сохранить некоторые другие данные, а затем перенаправить надругая страница.
Следующий заголовок получен в ответе
HTTP/1.1 302 Found
Location: /redirect_to_this_page
Set-Cookie:.myAuthCookie=TRUNCATED_ENCRYPTED_DATA_FOR_READABILITY; domain=.mydomainname.com; expires=Sun, 27-Nov-2011 20:27:16 GMT; path=/; HttpOnly
Set-Cookie:__MyOtherCookie=; domain=full.mydomainname.com; expires=Thu, 28-Oct-2010 20:27:24 GMT; path=/; HttpOnly
На запрос для /redirect_to_this_page
я не вижу заголовка, отправляемого по какой-либо причине.
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:__utma=113888769.1619895090.1322774580.1322774580.1322774580.1; __utmb=113888769.5.8.1322774827282; __utmc=113888769; __utmz=113888769.1319833259.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmv=
Host:full.mydomainname.com
Referer:http://full.mydomainname.com/referring_page_that_set_cookies
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.106 Safari/535.2
Есть идеи, как решить эту проблему?__MyOtherCookie устанавливается на каждый запрос.
Спасибо
Мустафа
РЕДАКТИРОВАТЬ
Некоторые открытия: IE9 работает правильно.Chrome не устанавливает cookie после получения заголовка Set-Cookie
, если срок его действия истек.
Таким образом, если я отправляю cookie без истечения срока действия (то есть он обрабатывается браузером как сеансовый cookie, уничтожается при закрытии браузера), cookie всегда устанавливается правильно, и все запросы содержат правильный cookie.
По словам Джона Стюарта .... Вааа?