首先看看Cookie的结构体
type Cookie struct { Name string Value string Path string // optional Domain string // optional Expires time.Time // optional RawExpires string // for reading cookies only // MaxAge=0 means no 'Max-Age' attribute specified. // MaxAge<0 means delete cookie now, equivalently 'Max-Age: 0' // MaxAge>0 means Max-Age attribute present and given in seconds MaxAge int Secure bool HttpOnly bool Raw string Unparsed []string // Raw text of unparsed attribute-value pairs }
设置Cookie
cookie := http.Cookie{Name: "testcookiename", Value: "testcookievalue", Path: "/", MaxAge: 86400} http.SetCookie(w, &cookie)
读取Cookie
cookie, err := req.Cookie("testcookiename")
删除Cookie
cookie := http.Cookie{Name: "testcookiename", Path: "/", MaxAge: -1} http.SetCookie(w, &cookie)
package main import ( "net/http" ) func SayHello(w http.ResponseWriter, req *http.Request) { w.Write([]byte("Hello")) } func ReadCookieServer(w http.ResponseWriter, req *http.Request) { // read cookie cookie, err := req.Cookie("testcookiename") if err == nil { cookievalue := cookie.Value w.Write([]byte("<b>cookie的值是:" + cookievalue + "</b>\n")) } else { w.Write([]byte("<b>读取出现错误:" + err.Error() + "</b>\n")) } } func WriteCookieServer(w http.ResponseWriter, req *http.Request) { cookie := http.Cookie{Name: "testcookiename", Value: "testcookievalue", Path: "/", MaxAge: 86400} http.SetCookie(w, &cookie) w.Write([]byte("<b>设置cookie成功。</b>\n")) } func DeleteCookieServer(w http.ResponseWriter, req *http.Request) { cookie := http.Cookie{Name: "testcookiename", Path: "/", MaxAge: -1} http.SetCookie(w, &cookie) w.Write([]byte("<b>删除cookie成功。</b>\n")) } func main() { http.HandleFunc("/", SayHello) http.HandleFunc("/readcookie", ReadCookieServer) http.HandleFunc("/writecookie", WriteCookieServer) http.HandleFunc("/deletecookie", DeleteCookieServer) http.ListenAndServe(":80", nil) }