如何删除cookie

zero_coding:

我编写了一个Web应用程序,该应用程序设置了cookie并将其删除。为了弄清楚场景的含义,请看以下代码片段。

package main

import (
    "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位置时,将按预期设置一个cookie。然后,当我调用/ delete时,它应该更改cookie的名称,值和过期时间。过期时间已更改,但名称和值未更改。

在此处输入图片说明

我想要的是,当用户单击“注销”按钮删除Cookie时,从浏览器中删除Cookie以便在身份验证系统中注销。
我也发现此链接并遵循建议,但无法正常工作。

托马斯·布罗耶:

Cookie是按名称键入关键字的,因此,当您“更改”名称时,实际上是“创建”另一个已经过期的Cookie。

保持名称不变,它应该起作用,但是不要忘了花一天的时间阅读有关cookie及其工作原理的信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章