技術向上

プログラミングの学び、気になるテクノロジーやビジネストレンドを発信

Cookieの削除【Go】

CookieにはMaxAgeという、有効期限を秒数で指定する属性があります。
Goでは、このMaxAgeにマイナス値か0を設定することで、対象のCookieを削除することができます。

func main() {
    ...
    http.HandleFunc("/delete", delete)    // 「/delete」にアクセスしたらdeleteを実行
    http.Handle("/favicon.ico", http.NotFoundHandler())
    http.ListenAndServe(":8080", nil)
}

func delete(w http.ResponseWriter, req *http.Request) {
    c, err := req.Cookie("test")    // クライアントから送信されたCookieを格納
    if err == http.ErrNoCookie {
        http.Redirect(w, req, "/set", http.StatusBadRequest)
    }
    c.MaxAge = -1    // 格納した変数cのMaxAgeフィールドに-1を指定
    http.SetCookie(w, c)    // 変更を反映するためにcをCookieにセット
    http.Redirect(w, req, "/index", http.StatusSeeOther)
}