你如何使用 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)
用户使用 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)