婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Go語言Cookie用法分析

Go語言Cookie用法分析

熱門標簽:鄭州亮點科技用的什么外呼系統 阿里云ai電話機器人 建造者2地圖標注 釘釘有地圖標注功能嗎 黃岡人工智能電銷機器人哪個好 汕頭小型外呼系統 濱州自動電銷機器人排名 惠州電銷防封電話卡 浙江高頻外呼系統多少錢一個月

本文實例講述了Go語言Cookie用法。分享給大家供大家參考,具體如下:

web 開發免不了要和 cookie 打交道。Go 的 http 庫也提供了 cookie 的相關操作。

復制代碼 代碼如下:
type Cookie struct {
  Name       string
  Value      string
  Path       string
  Domain     string
  Expires    time.Time
  RawExpires string
  MaxAge     int
  Secure     bool
  HttpOnly   bool
  Raw        string
  Unparsed   []string
}

Name 字段為 cookie 的名字,Value 是其值,剩下的 Path 和 Domain 則是 cookie 的存儲的范圍。Expires 是 cookie 的過期時間,如果不設置,那么這是一個 session 型的 cookie,即瀏覽器會話有用,一旦關閉瀏覽器,cookie 隨即會被刪除。

設置 Cookie

cookie 是 header 一項內容,因此可以使用 reponse 的 Header 方法設置 cookie。

復制代碼 代碼如下:
func setCookieHandler(w http.ResponseWriter, r *http.Request) {
    c1 := http.Cookie{
        Name: "first_cookie",
        Value: "vanyar",
        HttpOnly: true,
    }
    c2 := http.Cookie{
        Name: "second_cookie",
        Value: "noldor",
        HttpOnly:true,
    }
    w.Header().Set("Set-Cookie", c1.String())
    w.Header().Add("Set-Cookie", c2.String())
}

這里也可以測試驗證 Set 和 Add 兩個方法的差別。當然,和文件上傳類似,Go 也提供了常用的工具函數。

復制代碼 代碼如下:
http.SetCookie(w, c1)
http.SetCookie(w, c2)

http 的 SetCookie 方法也可以設置 cookie,就不需要關系 Set 和 Add 的先后順序了,當然第二個參數是一個 Cookie 的指針對象。設置了 cookie,接下來就是需要讀 cookie。

讀取 Cookie

讀取 cookie 的方式也有很多,cookie 封裝在header中,當然可以通過 header 方法處理。

復制代碼 代碼如下:
func getCookieHandler(w http.ResponseWriter, r *http.Request) {
    h := r.Header["Cookie"]
    fmt.Fprintln(w, h)
}

不使用 Header 方法,也可以使用 Request 的方法:

復制代碼 代碼如下:
func getCookieHandler(w http.ResponseWriter, r *http.Request) {
    c1, err := r.Cookie("first_cookie")
    if err != nil{
        fmt.Fprintln(w, "Cannot get cookie")
    }
    cs := r.Cookies()
    fmt.Fprintln(w, c1)
    fmt.Fprintln(w, cs)
}

訪問的時候可以發現,r.Cookie 返回了對于 key 的鍵值對,而 r.Cookies 則返回了所有 cookie 的 key 的鍵值對值。

Cookie 與 消息

cookie 的作用很多,通常記錄客戶端的一些信息,用來做用戶的登錄驗證。現在我們需要使用 cookie 來做一個小特性---消息。通常 web 請求發出后,response 返回數據,也可以設置一些消息用來指引用戶。

復制代碼 代碼如下:
func setMessageHandler(w http.ResponseWriter, r *http.Request) {
    msg := []byte("Hello World")
    c := http.Cookie{
        Name: "flash",
        Value:base64.URLEncoding.EncodeToString(msg),
    }
    http.SetCookie(w, c)
}
func getMessageHandler(w http.ResponseWriter, r *http.Request) {
    c, err := r.Cookie("flash")
    if err != nil {
        if err == http.ErrNoCookie {
            fmt.Fprintln(w, "No message found")
        }
    } else {
        rc := http.Cookie{
            Name: "flash",
            MaxAge: -1,
            Expires:time.Unix(1, 0),
        }
        http.SetCookie(w, rc)
        val, _ := base64.URLEncoding.DecodeString(c.Value)
        fmt.Fprintln(w, string(val))
    }
}

setMessageHandler 函數很簡單,就是創建一個 cookie 實例,然后把消息寫入到 cookie,然后再返回給客戶端。

getMessageHandler 首先會讀取 key 為 flash 的 cookie,如果沒讀到內容,則表示消息不存在,否則就創建另外一個 cookie,設置其過期時間這里等于清除 cookie。然后把讀取出來的 message 返回給客戶端。完成消息通信。

總結

我們討論了 Go 中 cookie 的基本應用。現在的 web 開發中,人們越來越重視網絡安全,因此 cookie 的安全也成為用戶關心的內容。Go 原生的 cookie 封裝比較簡單。Go 的社區卻開發了很多輪子,實現了secure cookie,例如 gorilla/securecookie 庫。實際開發中,可能會借助一些三方的庫或包來完成功能。

希望本文所述對大家Go語言程序設計有所幫助。

您可能感興趣的文章:
  • Go語言中如何確保Cookie數據的安全傳輸

標簽:晉中 瀘州 駐馬店 東營 阿壩 泰安 滄州 昭通

巨人網絡通訊聲明:本文標題《Go語言Cookie用法分析》,本文關鍵詞  語言,Cookie,用法,分析,語言,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Go語言Cookie用法分析》相關的同類信息!
  • 本頁收集關于Go語言Cookie用法分析的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 海南省| 上高县| 商水县| 乐至县| 清丰县| 体育| 安塞县| 博野县| 恩施市| 桂平市| 仙居县| 曲水县| 浙江省| 三台县| 中牟县| 基隆市| 鹤山市| 沙坪坝区| 平原县| 固原市| 富锦市| 新安县| 雅安市| 巧家县| 大姚县| 余江县| 新巴尔虎右旗| 兴业县| 辽中县| 宝鸡市| 蒲江县| 通许县| 岑巩县| 尚义县| 大冶市| 镇坪县| 木里| 雷州市| 玉田县| 乐亭县| 桂东县|