Go语言中Gin的Cookie操作
Cookie是网络服务器存储在用户计算机上的小型文本文件.它通常用于跟踪用户首选项或登录凭据.以及维护Http请求之间的状态.
1.Cookie具有各种属性.
1.1.名称和值;必须属性.用于存储任意数据.
1.2.到期日期:用于指定Cookie应在何时到期.
1.3.路径和域:用于将Cookie限制在网站的特定部分或特定域内.
2.Cookie的创建:
服务器接收到客户端发送的Http请求后,会在响应中包含Set-Cookie标头的信息.Cookie通常存储在客户端浏览器中.客户端浏览器在发送请求时会通过Http标头携带相应的Cookie 返回服务器.
2.1Cookie分为以下几种:
2.1.1:Set-Cookie和Cookie标头:
Set-Cookie是服务器在Http响应中使用的标头.用于将Cookie发送到用户代理处.在随后的请求中使用Cookie标头将Cookie返回服务器.
2.1.2:会话Cookie:
会话Cookie特点是当关闭浏览器时,它会被删除.因为它没有指定Expires或Max-Age属性.然后有一些浏览器具有"会话恢复功能",这会使得大多数Cookie保持原有功能.就像没有关闭浏览器一样.
2.1.3:持久Cookie:
持久性Cookie不会在关闭浏览器过期,而是达到特定日期后过期.
2.1.4:安全Cookie:
安全Cookie只能通过Https协议加密传输,确保他们不会通过不安全的连接发送.
2.2Cookie作用域:
Cookie的作用域由Domain和Path属性定义,即指定了哪些Url可以接收和发送该Cookie.
2.2.1:Domain属性:
指定了可以接收该Cookie的主机.如果未指定Domain,则默认情况下Cookie仅适用于当前主机(不包含子域名).如果指定了.该Cookie适用于当前主机所包含的子域名.
2.2.2:Path属性:
指定了Cookie的使用路径,即在哪些Url下Cookie可用.例如Path=/test,表示可以在/test /test/a /test/b 等路径都可以使用.
3.设置Cookie:
package main
import (
"github.com/gin-gonic/gin"
"net/http"
"time"
)
func main() {
request := gin.Default()
//设置一个Cookie
request.GET("/setCookie", func(c *gin.Context) {
cookie := &http.Cookie{
Name: "UserName",
Value: "itBo",
Expires: time.Now().Add(10 * time.Minute),
Path: "/",
}
http.SetCookie(c.Writer, cookie)
c.String(http.StatusOK, "ok,设置Cookie成功")
})
request.Run()
}
4.读取Cookie:
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
request := gin.Default()
//设置一个Cookie
request.GET("/readCookie", func(c *gin.Context) {
cookie, err := c.Cookie("userName")
if err != nil {
c.String(http.StatusOK, "未找到Cookie")
return
}
c.String(http.StatusOK, "ok,%s", cookie)
})
request.Run()
}
5.删除Cookie:
package main
import (
"github.com/gin-gonic/gin"
"net/http"
"time"
)
func main() {
request := gin.Default()
//设置一个Cookie
request.GET("/deleteCookie", func(c *gin.Context) {
cookie := &http.Cookie{
Name: "userName",
Value: "itBo",
Expires: time.Unix(0, 0),
Path: "/",
}
http.SetCookie(c.Writer, cookie)
c.String(http.StatusOK, "cookie is deleted")
})
request.Run()
}
到此这篇关于Go语言中Gin的Cookie操作的文章就介绍到这了,更多相关Gin的Cookie操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
解决Go Json Unmarshal反序列化丢失数字精度问题
业务会使用 id生成器 产生的 分布式唯一ID,长度比较长,所以代码反序列化时,会出现精度丢失问题,那如何解决呢,下面小编就来和大家详细讲讲2023-08-08


最新评论