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

时间:2015-04-07 19:36:52

标签: http cookies go

用户在使用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,执行此操作的正确方法是什么?

2 个答案:

答案 0 :(得分:4)

您以与设置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设置为过去的时间非常重要。

答案 1 :(得分:0)

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

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