首頁  >  文章  >  後端開發  >  如何使用 Golang 管理 HTTP cookie?

如何使用 Golang 管理 HTTP cookie?

WBOY
WBOY原創
2024-06-01 09:41:561127瀏覽

使用Golang 管理HTTP Cookie 的方法有:設定Cookie:使用http.Cookie 設定其名稱、值、過期時間、網域、路徑、安全標誌和HttpOnly 標誌,然後使用http.SetCookie() 新增到回應頭上。取得 Cookie:使用 r.Cookie() 來取得特定名稱的 Cookie,然後可以使用它的 Value 欄位存取其值。刪除 Cookie:取得 Cookie 後,將其 Expires 欄位設定為過去的時間,並將其新增至回應頭上,這會將 Cookie 從用戶端瀏覽器中刪除。

如何使用 Golang 管理 HTTP cookie?

如何使用 Golang 管理 HTTP Cookie?

在 Golang 中管理 HTTP cookie 的常見方法是使用 net/http 套件提供的 API。以下是如何設定、取得和刪除HTTP cookie 的步驟:

#設定Cookie

#
package main

import (
    "fmt"
    "net/http"
    "time"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        // 设置名为 "session_id" 的 cookie,并将它的值设置为 "some-uuid"
        cookie := &http.Cookie{
            Name: "session_id",
            Value: "some-uuid",
        }
        // 设置 cookie 的过期时间
        cookie.Expires = time.Now().Add(24 * time.Hour)
        // 设置 cookie 的域(默认为当前请求的域)
        cookie.Domain = "example.com"
        // 设置 cookie 的路径(默认为 "/")
        cookie.Path = "/"
        // 设置 cookie 的安全标志(默认为 false)
        cookie.Secure = true
        // 设置 cookie 的 HttpOnly 标志(默认为 false)
        cookie.HttpOnly = true

        // 将 cookie 添加到响应头上
        http.SetCookie(w, cookie)
        fmt.Fprint(w, "Cookie set successfully")
    })

    http.ListenAndServe(":8080", nil)
}

取得Cookie

package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        // 获取名为 "session_id" 的 cookie
        cookie, err := r.Cookie("session_id")
        if err != nil {
            fmt.Fprint(w, "Cookie not found")
            return
        }

        // 打印 cookie 的值
        fmt.Fprint(w, "Cookie value:", cookie.Value)
    })

    http.ListenAndServe(":8080", nil)
}

############################# ##刪除Cookie######
package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        // 获取名为 "session_id" 的 cookie
        cookie, err := r.Cookie("session_id")
        if err != nil {
            fmt.Fprint(w, "Cookie not found")
            return
        }

        // 设置 cookie 的过期时间为过去,从而删除它
        cookie.Expires = time.Now().Add(-1 * time.Second)

        // 将 cookie 添加到响应头上
        http.SetCookie(w, cookie)
        fmt.Fprint(w, "Cookie deleted successfully")
    })

    http.ListenAndServe(":8080", nil)
}

以上是如何使用 Golang 管理 HTTP cookie?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn