Cookieをセットし、Nameを指定してセットしたCookieを取得する例です。
func main() { http.HandleFunc("/", set) http.HandleFunc("/read", read) http.Handle("/favicon.ico", http.NotFoundHandler()) http.ListenAndServe(":8080", nil) } func set(w http.ResponseWriter, req *http.Request) { http.SetCookie(w, &http.Cookie{ Name: "name", Value: "some-cookie", Path: "/", // ルートディレクトリを指定し、全てのディレクトリでCookieをサーバに送信できるようにする }) } func read(w http.ResponseWriter, req *http.Request) { c, err := req.Cookie("name") // nameをキーにして、クライアントから送信されたCookieを取得 if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } fmt.Fprintln(w, c) }
http.CookieにはもちろんMaxAgeやDomain、SecureなどCookieに関するフィールドが用意されています。
RequestからCookieを取得する際のエラーハンドリングですが、
次のように、「その名前のCookieが存在しない」エラーに限定して処理を書くことができます。
... c, err := req.Cookie("name") if err == http.ErrNoCookie { ... } ...