【问题标题】:How do you delete a cookie with Go and http package?如何使用 Go 和 http 包删除 cookie?
【发布时间】:2015-06-12 12:53:27
【问题描述】:

用户使用 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,正确的方法是什么?

【问题讨论】:

标签: http cookies go


【解决方案1】:

您删除 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 设置为过去的时间很重要。

【讨论】:

  • 那么最好的选择是在同一个 cookie 中同时执行 MaxAge
  • @jjgames 是的,两者都设置。
【解决方案2】:

根据the doc of cookie.go,MaxAge

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

【讨论】:

  • 设置 MaxAge 适用于支持该属性的浏览器。设置 Expires 更好,因为所有浏览器都支持该属性。
  • 是否有一次性删除所有cookies的选项?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-02
  • 1970-01-01
  • 1970-01-01
  • 2011-04-09
  • 2010-12-20
相关资源
最近更新 更多