Go语言中Gin的Cookie操作

 更新时间:2026年07月07日 09:01:03   作者:H_拾忆  
本文主要介绍了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操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • golang中配置 sql.DB获得更好的性能

    golang中配置 sql.DB获得更好的性能

    这篇文章主要介绍了golang中如何配置 sql.DB获得更好的性能,在这篇文章中,我想准确解释这些设置的作用,并展示它们可能产生的(积极和消极)影响,需要的朋友可以参考下
    2023-10-10
  • 轻松管理多个Go版本之g工具安装与使用方法

    轻松管理多个Go版本之g工具安装与使用方法

    这篇文章主要介绍了轻松管理多个Go版本之g工具安装与使用的相关资料,g是一个Linux、macOS、Windows下的命令行工具,可以提供一个便捷的多版本go环境的管理和切换,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-11-11
  • Golang Heap的源码剖析

    Golang Heap的源码剖析

    这篇文章主要给大家详细剖析了Golang Heap源码,文中有详细的代码示例,对我们学习Golang Heap有一定的帮助,需要的朋友可以参考下
    2023-07-07
  • golang之log rotate详解

    golang之log rotate详解

    下面小编就为大家带来一篇golang之log rotate详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • 一文详解Go语言中对象池的正确打开方式

    一文详解Go语言中对象池的正确打开方式

    对象池是一种设计模式,它维护一组已经创建好的对象,当需要使用对象时,直接从对象池中获取,使用完毕后再放回对象池,而不是频繁地创建和销毁对象,下面我们就来看看Go语言中对象池的具体使用吧
    2025-02-02
  • 基于golang如何实现error工具包详解

    基于golang如何实现error工具包详解

    Go 语言使用 error 类型来返回函数执行过程中遇到的错误,下面这篇文章主要给大家介绍了关于如何基于golang实现error工具包的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-09-09
  • 解决Go Json Unmarshal反序列化丢失数字精度问题

    解决Go Json Unmarshal反序列化丢失数字精度问题

    业务会使用 id生成器 产生的 分布式唯一ID,长度比较长,所以代码反序列化时,会出现精度丢失问题,那如何解决呢,下面小编就来和大家详细讲讲
    2023-08-08
  • Go并发与锁的两种方式该如何提效详解

    Go并发与锁的两种方式该如何提效详解

    如果没有锁,在我们的项目中,可能会存在多个goroutine同时操作一个资源(临界区),这种情况会发生竞态问题(数据竞态),下面这篇文章主要给大家介绍了关于Go并发与锁的两种方式该如何提效的相关资料,需要的朋友可以参考下
    2022-12-12
  • 浅谈JWT在GO中的使用方法及原理

    浅谈JWT在GO中的使用方法及原理

    JWT是一种基于 JSON 的开放标准,用于在网络应用间传递声明,JWT被设计为可安全地将用户身份验证和授权数据作为 JSON 对象在各个应用程序之间传递,本文将详细给大家介绍JWT原理及在Go中的用法,需要的朋友可以参考下
    2023-05-05
  • Go语言断言和类型查询的实现

    Go语言断言和类型查询的实现

    Go语言变量类型包含基础类型和复合类型,类型断言一般是对基础类型的处理,本文主要介绍了Go语言断言和类型查询的实现,感兴趣的可以了解一下
    2024-01-01

最新评论