首先看看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)
}