Go语言操作Cookie
  Eo7GKm3ms3Sh 2023年11月02日 50 0


创作不易感谢支持。
一条主写Go和PHP的小菜鸟。平常有时间喜欢自己写点东西,如有不对的地方,欢迎大佬指点。  

GO操作Cookie

在日常开发中,经常会用到Cookie存储一些我们需要的信息。

Cookie参数详解

参数

类型

含义

Name

string

cookie的名称

Value

string

cookie的值;value值中不允许有空格符的存在,建议在设置时处理下

Path

string

Cookie的使用路径。如果设置为“/sessionWeb/”,则只有contextPath为“/sessionWeb”的程序可以访问该Cookie。如果设置为“/”,则本域名下contextPath都可以访问该Cookie。注意最后一个字符必须为“/”。

Domain

string

可以访问该Cookie的域名。如果设置为“.google.com”,则所有以“google.com”结尾的域名都可以访问该Cookie。注意第一个字符必须为“.”

MaxAge

int

被访问后的存活时间;这个时间是个相对值(比如:3600s);MaxAge=0,未指定该属性;MaxAge<0时,删除cookie,相当于“Max Age:0”

Expires

time.Time

Expires是cookie的过期时间,如果不设置,那么这是一个session型的cookie,即浏览器会话有用,一旦关闭浏览器,cookie随即会被删除;Expires指定的时间可以是相对文件的最后访问时间(Atime)或者修改时间(MTime);比如2018/10/10 10:10:10

RawExpires

string

仅用于阅读cookies

0Secure

bool

是否需要安全传输,为true时只有https才会传输该cookie

HttpOnly

bool

为true时,不能通过js读取该cookie的值

Raw

string

Unparsed

[]string

未解析的 attribute-value 属性位对

Cookie的设置、读取、删除

package main

import (
	"io"
	"net/http"
)

//Cookie1Handler 方式一
func Cookie1Handler(w http.ResponseWriter, r *http.Request) {
	ck := &http.Cookie{
		Name:       "test-name",
		Value:      "hello",
		Path:       "/",
		Domain:     "localhost",
		MaxAge: 120,
	}

	http.SetCookie(w, ck)

	cookie, err := r.Cookie("test-name")
	if err != nil {
		io.WriteString(w, err.Error())
		return
	}

	io.WriteString(w, cookie.Value)
}

//Cookie2Handler 方式二
func Cookie2Handler(w http.ResponseWriter, r *http.Request)  {
	ck := &http.Cookie{
		Name:       "test-name2",
		Value:      "hello2",
		Path:       "/",
		Domain:     "localhost",
		MaxAge: 120,
	}

	w.Header().Set("set-cookie", ck.String())

	cookie, err := r.Cookie("test-name2")
	if err != nil {
		io.WriteString(w, err.Error())
		return
	}

	io.WriteString(w, cookie.Value)

}

//CookieClear 删除Cookie
func CookieClear(w http.ResponseWriter, r *http.Request) {
	cookie := &http.Cookie{
		Name:       "test-name",
		Value:      "",
		Path:       "/",
		Domain:     "localhost",
		MaxAge: -1,
	}

	http.SetCookie(w, cookie)
}

func main() {

	http.HandleFunc("/cookie", Cookie1Handler)
	http.HandleFunc("/cookie2", Cookie2Handler)
	http.HandleFunc("/clear", CookieClear)

	http.ListenAndServe(":9999", nil)

}


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: Go - 方法 下一篇: Go操作Memcached
  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

Eo7GKm3ms3Sh
最新推荐 更多

2024-05-03