Goの標準パッケージを使ってクッキーの操作をやってみました。
#クッキーをブラウザに渡す
コードはこんな感じです。
main.go
package main
import (
"net/http"
"log"
)
func setCookie(w http.ResponseWriter,r *http.Request){
c1:=http.Cookie{
Name: "cookie1",
Value:"Hello World!",
HttpOnly: true,
}
c2:=http.Cookie{
Name:"cookie2",
Value:"Hello Quita!",
}
http.SetCookie(w,&c1)
http.SetCookie(w,&c2)
}
func main(){
http.HandleFunc("/set_cookie",setCookie)
log.Fatal(http.ListenAndServe(":8080",nil))
}
実行して localhost:8080/set_cookie をブラウザで開くと一見なにも変化がないこのような画面になります。
しかし、Chromeの検証でApplication>Storage>Cookiesを見るとこのようにクッキーがブラウザに渡せていることがわかります。
次は逆に渡したクッキーをブラウザから取得し、画面に出力してみます。
##クッキーをブラウザから取得
コードはこちらです。
main.go
package main
import (
"fmt"
"log"
"net/http"
)
func getCookie(w http.ResponseWriter,r *http.Request){
//名前が"coockie1"であるクッキーを取得
c1,err:=r.Cookie("cookie1")
if err!=nil{
log.Fatal(err)
}
//c1を出力
fmt.Fprintln(w,c1)
//クッキーをスライスで全取得
cSlice:=r.Cookies()
//cSliceを出力
fmt.Fprintln(w,cSlice)
}
func main(){
http.HandleFunc("/get_cookie",getCookie)
log.Fatal(http.ListenAndServe(":8080",nil))
}
http://localhost:8080/get_cookie にアクセスするとこのように先ほどブラウザに渡したクッキーを取得できていることがわかります。
メソッドCoockies()はすべてのクッキーをスライス形で返します。
##参考