Mus*_*idd 5 cookies asp.net-mvc
我正在使用类似于此的代码通过ASP.NET设置一个带有过期日期的cookie
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);
Run Code Online (Sandbox Code Playgroud)
我还在同一个请求中设置另一个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
Run Code Online (Sandbox Code Playgroud)
根据请求/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
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决这个问题?每个请求都会设置__MyOtherCookie.
谢谢
穆斯塔法
一些发现:IE9正常工作.Set-Cookie如果Cookie 具有过期日期,则在获取标头后不会设置Cookie .
因此,如果我发送cookie没有过期(因此它被浏览器视为会话cookie,在浏览器关闭时被杀死),cookie总是被正确设置并且所有请求都包含正确的cookie.
用乔恩斯图尔特的话来说...... 哇?
从您的自定义 cookie 中删除域,然后重试。
如果您想在所有子域中使用 cookie,则 cookie 中的域名必须与开头带有点的域匹配,查看您的标头,它不匹配:
服务器响应有:
full.mydomainname.com
Run Code Online (Sandbox Code Playgroud)
请求有:
full.mydomain.com
Run Code Online (Sandbox Code Playgroud)
或者可能与 Safari 错误有关Safari 不设置 Cookie,但 IE / FF 却设置
| 归档时间: |
|
| 查看次数: |
8438 次 |
| 最近记录: |