我编写了一个设置 cookie 并删除它的 Web 应用程序。为了阐明我的意思,请查看以下代码片段。package mainimport ( "fmt" "github.com/gorilla/mux" "net/http" "time")func rootHandler(rw http.ResponseWriter, r *http.Request) { fmt.Fprintf(rw, "Hello Foo")}func setCookieHandler(rw http.ResponseWriter, r *http.Request) { c := &http.Cookie{ Name: "storage", Value: "value", Path: "/", MaxAge: 0, HttpOnly: true, } http.SetCookie(rw, c)}func deleteCookieHandler(rw http.ResponseWriter, r *http.Request) { c, err := r.Cookie("storage") if err != nil { panic(err.Error()) } c.Name = "Deleted" c.Value = "Unuse" c.Expires = time.Unix(1414414788, 1414414788000)}func readCookieHandler(rw http.ResponseWriter, r *http.Request) { c, err := r.Cookie("storage") if err != nil { panic(err.Error()) } fmt.Println(c.Expires)}func evaluateCookieHandler(rw http.ResponseWriter, r *http.Request) { c, err := r.Cookie("storage") if err != nil { panic(err.Error()) } if time.Now().After(c.Expires) { fmt.Println("Cookie is expired.") }}func main() { mux := mux.NewRouter() mux.HandleFunc("/", rootHandler) mux.HandleFunc("/cookie", setCookieHandler) mux.HandleFunc("/delete", deleteCookieHandler) mux.HandleFunc("/read", readCookieHandler) mux.HandleFunc("/eval", evaluateCookieHandler) http.ListenAndServe(":3000", mux)}如您所见,当我访问 /cookie location 时,它将按预期设置一个 cookie。然后当我调用 /delete 时,它应该更改 cookie 的名称、值和过期时间。过期时间已更改,但名称和值未更改。我想要的是,当用户单击注销按钮删除 cookie 时,从浏览器中删除 cookie 以在身份验证系统中注销。我也发现了这个链接并遵循了建议,但没有按预期工作。
3 回答
桃花长相依
TA贡献1860条经验 获得超8个赞
要删除名为“storage”的 cookie,发送具有相同 cookie 名称的 set-cookie。
deleteCookieHandler() 应该如下
c := &http.Cookie{
Name: "storage",
Value: "",
Path: "/",
Expires: time.Unix(0, 0),
HttpOnly: true,
}
http.SetCookie(rw, c)
手掌心
TA贡献1942条经验 获得超3个赞
Cookie 以名称为键,因此当您“更改”名称时,实际上是“创建”了另一个已过期的 cookie。
保持名称不变,它应该可以工作,但不要忘记每天花一些时间阅读有关 cookie 及其工作原理的信息。
慕斯709654
TA贡献1840条经验 获得超5个赞
MaxAge=0表示未指定“Max-Age”属性。
MaxAge<0表示现在删除 cookie,相当于 'Max-Age: 0'
MaxAge>0表示 Max-Age 属性存在并以秒为单位给出
c := &http.Cookie{
Name: "storage",
Value: "",
Path: "/",
MaxAge: -1,
HttpOnly: true,
}
http.SetCookie(rw, c)
- 3 回答
- 0 关注
- 283 浏览
添加回答
举报
0/150
提交
取消