cookie通常分为临时cookie和持久cookie,临时cookie在关闭浏览器的时候就会自动删除,持久cookie有过期时间,只有到了过期时间才会自动删除。cookie的作用主要是在前端存储数据,这样每次发起http请求时,会把客户端的cookie也一起发送到服务器。

package main

import (
"fmt"
"net/http"
)

func setCookie(w http.ResponseWriter, r *http.Request) {
c1 := http.Cookie{
Name: "aa",
Value: "bb",
HttpOnly: true,
}
c2 := http.Cookie{
Name: "cc",
Value: "dd",
HttpOnly: true,
}
w.Header().Set("Set-Cookie", c1.String())
w.Header().Add("Set-Cookie", c2.String())
}

先创建了2个cookie的结构体,第一次通过Set方法设置cookie,第二次通过

Add进行添加第二个cookie。


func getCookie(w http.ResponseWriter, r *http.Request) {
h := r.Header["Cookie"]
fmt.Fprintln(w, h)
c1, err := r.Cookie("aa")
if err != nil {
fmt.Fprintln(w, "no cookie")
}
cs := r.Cookies()
fmt.Fprintln(w, c1)
fmt.Fprintln(w, cs)
}

获取cookie,使用获取头信息Header可以获取所有的cookie,也可以使用

r.Cookie("")获取单个cookie,如果获取的cookie名字不存在会返回错误