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行代码时,它工作得很好。

我该如何解决这个问题?

谢谢

c# / ASP.不能删除指定了Domain属性的cookie

好吧,我明白了。

当你删除一个带有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不会设置域名。