Golang语言 Cookie的使用

时间:2022-05-05
本文章向大家介绍Golang语言 Cookie的使用,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

最近在研究服务器的部署及快速启动,动态更新功能,后台肯定是网页实现;同样是GO语言实现,写的时候发现没有用框架,自己写起来很费时。坚持就会胜利,没准自己还会弄出来一个框架。cookie研究了下,看下是不是应用。

首先看看Cookie的结构体

type Cookie struct {
    Name  string
    Value string

    Path       string    // optional
    Domain     string    // optional
    Expires    time.Time // optional
    RawExpires string    // for reading cookies only    // MaxAge=0 means no 'Max-Age' attribute specified.    // MaxAge<0 means delete cookie now, equivalently 'Max-Age: 0'    // MaxAge>0 means Max-Age attribute present and given in seconds
    MaxAge   int
    Secure   bool
    HttpOnly bool
    Raw      string
    Unparsed []string // Raw text of unparsed attribute-value pairs}

设置Cookie

cookie := http.Cookie{Name: "testcookiename", Value: "testcookievalue", Path: "/", MaxAge: 86400}
http.SetCookie(w, &cookie)

读取Cookie

cookie, err := req.Cookie("testcookiename")

删除Cookie

cookie := http.Cookie{Name: "testcookiename", Path: "/", MaxAge: -1}
http.SetCookie(w, &cookie)
package main

import (    "net/http")

func SayHello(w http.ResponseWriter, req *http.Request) {
    w.Write([]byte("Hello"))
}

func ReadCookieServer(w http.ResponseWriter, req *http.Request) {    // read cookie
    cookie, err := req.Cookie("testcookiename")    if err == nil {
        cookievalue := cookie.Value
        w.Write([]byte("<b>cookie的值是:" + cookievalue + "</b>n"))
    } else {
        w.Write([]byte("<b>读取出现错误:" + err.Error() + "</b>n"))
    }
}

func WriteCookieServer(w http.ResponseWriter, req *http.Request) {
    cookie := http.Cookie{Name: "testcookiename", Value: "testcookievalue", Path: "/", MaxAge: 86400}
    http.SetCookie(w, &cookie)

    w.Write([]byte("<b>设置cookie成功。</b>n"))
}

func DeleteCookieServer(w http.ResponseWriter, req *http.Request) {
    cookie := http.Cookie{Name: "testcookiename", Path: "/", MaxAge: -1}
    http.SetCookie(w, &cookie)

    w.Write([]byte("<b>删除cookie成功。</b>n"))
}

func main() {
    http.HandleFunc("/", SayHello)
    http.HandleFunc("/readcookie", ReadCookieServer)
    http.HandleFunc("/writecookie", WriteCookieServer)
    http.HandleFunc("/deletecookie", DeleteCookieServer)

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

http://localhost/readcookie

http://localhost/writecookie

http://localhost/deletecookie