gpt4 book ai didi

cookies - 无法使 cookie 过期

转载 作者:IT王子 更新时间:2023-10-29 00:52:25 28 4
gpt4 key购买 nike

我正在使用 Go App Engine SDK,我正在尝试设置/使 Cookie 过期。

设置Cookie是没有问题的,但是不可能让它在浏览器中过期。

该应用程序基于 negroni 实例:

func init() {

app := negroni.New()
app.UseHandler(Router())
http.Handle("/", app)

}

路由器是一个mux实例:

func Router() *mux.Router {

r := mux.NewRouter()
subRouter := r.PathPrefix(PATH_PREFIX).Subrouter()

subRouter.HandleFunc("/sign", LoginHandler)
subRouter.HandleFunc("/userinfo", UserInfo)
subRouter.HandleFunc("/logout", Logout)

return r
}

登录处理程序是基本的:

func LoginHandler(w http.ResponseWriter, r *http.Request) {

ctx := appengine.NewContext(r)

u := user.Current(ctx)

if u == nil {

url, err := user.LoginURL(ctx, r.URL.String())
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
w.Header().Set("Location", url)
w.WriteHeader(http.StatusFound)
return
}

//COOKIE_ID = "SomeString"
cookie := &http.Cookie{Name: COOKIE_ID, Value: u.ID, Path: "/", MaxAge: 0}
http.SetCookie(w, cookie)

w.Header().Set("Location", "/")
w.WriteHeader(http.StatusFound)
}

使 cookie 过期:

func Logout(w http.ResponseWriter, r *http.Request) {

ctx := appengine.NewContext(r)
url, err := user.LogoutURL(ctx, "/")

if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}

expiredCookie := &http.Cookie{Name: COOKIE_ID, MaxAge: -10, Expires: time.Now()}
http.SetCookie(w, expiredCookie)

w.Header().Set("Location", url)
w.WriteHeader(http.StatusFound)
}

我尝试了一切:

  • 获取旧cookie,修改MaxAge和Expires
  • 创建一个具有相同名称的新 cookie 以覆盖

完整代码:https://gist.github.com/yageek/78e43c83b56467fc8338

无论如何,cookie 仍然保留在导航器中。我做错了什么?

最佳答案

浏览器存储多个路径的 cookie。设置 cookie header 上的路径属性以匹配用于创建 cookie 的路径属性。

将最大年龄设置为负值以清除 cookie。如果等于零,则不会在 header 上设置最大年龄属性。

一些浏览器不理解最大年龄属性。为了这些浏览器的利益,将到期时间设置为过去的某个时间。

expiredCookie := &http.Cookie{Path: "/", Name: COOKIE_ID, MaxAge: -1, Expires: time.Now().Add(-100 * time.Hour)}

关于cookies - 无法使 cookie 过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34025115/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com