你如何使用 Go 和 http 包删除 cookie?

How do you delete a cookie with Go and http package?

用户使用 http.SetCookie 访问时设置了 cookie,如下所示:

expire := time.Now().Add(7 * 24 * time.Hour)
cookie := http.Cookie{
    Name:    "name",
    Value:   "value",
    Expires: expire,
}
http.SetCookie(w, &cookie)

如果我以后想删除这个 cookie,正确的方法是什么?

您删除 cookie 的方式与设置 cookie 的方式相同,但在过去的时间:

expire := time.Now().Add(-7 * 24 * time.Hour)
cookie := http.Cookie{
    Name:    "name",
    Value:   "value",
    Expires: expire,
}
http.SetCookie(w, &cookie)

注意 -7

您也可以将 MaxAge 设置为负值。因为旧版本的 IE 不支持 MaxAge,所以始终将 Expires 设置为过去的时间很重要。

根据the doc of cookie.go,MaxAge<0 表示现在删除 cookie。您可以尝试以下代码:

cookie := &http.Cookie{
    Name:   cookieName,
    Value:  "",
    Path:   "/",
    MaxAge: -1,
}
http.SetCookie(w, cookie)