c# / ASP.不能删除指定了Domain属性的cookie
本文关键字:Domain 属性 cookie ASP 不能 删除 | 更新日期: 2023-09-27 18:04:48
在我的登录方法中有以下代码:
Response.Cookies["cookie"].Value = "...";
Response.Cookies["cookie"].Domain = "domain.com";
这样cookie就被放入主域和所有子域
但是当我尝试删除cookie时:
Response.Cookies["cookie"].Expires = DateTime.Now.AddYears(-1);
它不工作!
当我删除指定Domain属性的2行代码时,它工作得很好。
我该如何解决这个问题?
谢谢
好吧,我明白了。
当你删除一个带有Domain属性集的cookie时,你需要为新的假cookie设置相同的属性:
if (Request.Cookies["cookie"] != null)
{
HttpCookie myCookie = new HttpCookie("cookie");
myCookie.Expires = DateTime.Now.AddDays(-1d);
myCookie.Domain = "domain.com"; // !!!!
Response.Cookies.Add(myCookie);
}
我怀疑您正在设置Expires
,而Response
在子域上…
交叉检查:你可以试着从域名本身设置它,看看是否有效?
根据http://msdn.microsoft.com/en-us/library/ms178195%28v=VS.100%29.aspx,您可以通过以下方式删除cookie:
if (Request.Cookies["cookie"] != null)
{
HttpCookie myCookie = new HttpCookie("cookie");
myCookie.Expires = DateTime.Now.AddDays(-1d);
Response.Cookies.Add(myCookie);
}
需要用空字符串设置域和值。如果没有值,它不能工作。
var cookie = new HttpCookie(cookieName, string.Empty)
{
Expires = DateTime.Now.AddYears(-1),
Domain = {YourDomain}
};
Response.Cookies.Add(cookie);
搜索了相当多,不能让它工作。我必须实际设置value属性才能使其工作!使用mvc 3 .net 4.
var current = HttpContext.Current.Request.Cookies[key];
if (current == null) return;
var myCookie = new HttpCookie(key)
{
Expires = DateTime.Now.AddYears(-1),
Value = current.Value,
Domain = domain
};
HttpContext.Current.Response.Cookies.Set(myCookie);
.Net 5
试验
foreach (var cookie in HttpContext.Request.Cookies)
{
Response.Cookies.Delete(cookie.Key, new CookieOptions()
{
Domain = Request.Host.Host // ADD
});
}
响应头示例
set - cookie: _example =;expires=星期四,1970年1月1日00:00:00 GMT;域= YOUR.DOMAIN;路径=/
CookieOptions()
是可选的,可以省略,但是响应的cookie不会设置域名。