和session不同,go标准包对cookie的使用有全面的支持。
开个头,写一写简单用法,以后陆续补上高级用法。
一、代码实现
(1)导入包
cookie的方法包含在了net/http中,只要网络编程就必须使用这个包。
(2)直接上代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
package main import ( "fmt" "log" "net/http" ) func testcookie(w http.ResponseWriter, r *http.Request) { cookie := http.Cookie{Name: "xie", Value: "godlikexie", MaxAge: 10} http.SetCookie(w, &cookie) getcookie, _ := r.Cookie("xie") fmt.Fprint(w, getcookie) for _, rangecookie := range r.Cookies() { fmt.Println(rangecookie.Name) fmt.Println(rangecookie.Value) fmt.Println(rangecookie.MaxAge) fmt.Println(rangecookie.String()) } } func main() { http.HandleFunc("/testcookie", testcookie) // 设置访问的路由 err := http.ListenAndServe(":9091", nil) // 设置监听的端口 if err != nil { log.Fatal("ListenAndServe: ", err) } } |
(3)没解决的问题
console输出的永远是:
godlikexie
0
xie=godlikexie
就是说MaxSize永远是0?
但是实际上cookie的生命周期确实只有10s,不知道为什么get到的MaxAge为0…
莫非是异步导致的?
二、总结
记录一下。