我写了一个设置cookie并删除它的Web应用程序.为了澄清方案,我的意思是看下面的代码片段.
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)
}
Run Code Online (Sandbox Code Playgroud)
如您所见,当我访问/ cookie位置时,它将按预期设置cookie.然后当我调用/删除时,它应该更改cookie的名称,值和过期时间.过期时间已更改,但名称和值不会更改.
我想要的是,当用户点击退出按钮删除cookie时,从浏览器中删除用于在身份验证系统中注销的cookie.
我也发现了这个链接,并遵循建议,但没有按预期工作.
小智 12
要删除名为"storage"的cookie,请发送具有相同cookie名称的set-cookie.
deleteCookieHandler()应如下所示
c := &http.Cookie{
Name: "storage",
Value: "",
Path: "/",
Expires: time.Unix(0, 0),
HttpOnly: true,
}
http.SetCookie(rw, c)
Run Code Online (Sandbox Code Playgroud)
小智 7
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)
Run Code Online (Sandbox Code Playgroud)
Cookie是按名称键入关键字的,因此,当您“更改”名称时,实际上是“创建”了一个已经过期的其他Cookie。
保持名称不变,它应该起作用,但不要忘了花一天的时间阅读有关cookie及其工作原理的信息。
归档时间: |
|
查看次数: |
7819 次 |
最近记录: |