Golang gin Cookie的使用

news2024/10/6 2:25:34

Cookie介绍


  • HTTP是无状态协议,服务器不能记录浏览器的访问状态,也就是说服务器不能区分两次请求是否由同一个客户端发出
  • Cookie就是解决HTTP协议无状态的方案之一,中文是小甜饼的意思
  • Cookie实际上就是服务器保存在浏览器上的一段信息。浏览器有了Cookie之后,每次向服务器发送请求时都会同时将该信息发送给服务器,服务器收到请求后,就可以根据该信息处理请求
  • Cookie由服务器创建,并发送给浏览器,最终由浏览器保存

Cookie的用途

  • 测试服务端发送cookie给客户端,客户端请求时携带cookie

 

 

Cookie的使用


  • cookie的获取

func (c *Context) Cookie(name string) (string, error)

Cookie 返回请求中提供的命名 cookie,如果未找到则返回 ErrNoCookie。并返回命名的 cookie 是未转义的。如果多个 cookie 与给定名称匹配,则只会返回一个 cookie。

  • cookie的设置
func (c *Context) SetCookie(name, value string, maxAge int, path, domain string, secure, httpOnly bool)

 SetCookie 将 Set-Cookie 标头添加到 ResponseWriter 的标头中。提供的 cookie 必须具有有效的名称。无效的 cookie 可能会被静默丢弃。

参数:

name:cookie的名称

value:cookie的值

maxAge int:cookie存活时间,单位为秒

path:cookie所在目录

domain string:域名

secure:是否只能通过https访问

httpOnly bool :是否允许别人通过js获取自己的cookie

实例演示

package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
)

func TestHandler(c *gin.Context) {

// 获取客户端是否携带cookie
	if cookie, err := c.Cookie("username"); err != nil {
		fmt.Println("cookie", cookie)
		fmt.Println("err", err)
         
        cookie = "lucas"
        // 给客户端设置cookie
		c.SetCookie("username", cookie, 60*60, "/", "localhost", false, true)

		fmt.Printf("cookie的值为:%v\n", cookie)
		c.String(200, "测试cookie")
	}

}

func main() {
   // 1.创建路由
   // 默认使用了2个中间件Logger(), Recovery()
	engine := gin.Default()

	engine.GET("/cookie", TestHandler)
	engine.Run(":8888")
}

cookie 
err http: named cookie not present
cookie的值为:lucas
[GIN] 2023/09/12 - 18:29:13 | 200 |       924.4µs |             ::1 | GET      "/cookie"

 查看cookie

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1004558.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI绘画:StableDiffusion实操教程-斗破苍穹-云韵-婚服(附高清图下载)

大家好,我是小梦,最近一直研究AI绘画。 不久前,我与大家分享了StableDiffusion的全面教程:“AI绘画:Stable Diffusion 终极宝典:从入门到精通 ” 然而,仍有些读者提出,虽然他们已经…

nVisual光纤资源管理软件,亮相第24届光博会

第24届中国国际光电博览会(CIOE)于9月6日至8日在深圳国际会展中心盛大开幕。作为行业领先的网络基础设施管理软件供应商,耐威迪携nVisual光纤资源管理软件亮相9号馆C001、C002展位,全方位展示室外网络基础设施管理、光纤资源管理、…

【数据结构】堆的创建

文章目录 一、堆的概念及结构1、什么是堆2、堆的性质3、堆的结构及分类 二、堆的创建1、堆向下调整算法2、堆向上调整算法3、堆的创建 一、堆的概念及结构 1、什么是堆 堆就是以二叉树的顺序存储方式来存储元素,同时又要满足父亲结点存储数据都要大于儿子结点存储数…

Win10系统电脑没有键盘怎么启用软键盘

如果使用电脑的过程中出现键盘故障的话,我们是可以通过系统自带的软键盘,也就是屏幕键盘来应急的。那么如何打开软键盘来使用呢?下面就和大家讲讲电脑Win10如何打开软键盘吧,操作也是很简单的。 1、找到桌面上的控制面板&#xf…

距离度量方法

距离度量方法 一、欧式距离(Euclidean Distance)二、余弦相似度(Cosine Similarity)三、汉明距离(Hamming Distance)四、曼哈顿距离(Manhattan Distance)五、切比雪夫距离(Chebyshev Distance)六、闵可夫斯基距离(Minkowski Distance)七、Jaccard Index八、Haversine Distance九…

【C++--类和对象】开篇

内联 在频繁调用一个函数时,会建立栈帧,如何减少内存的消耗 int add(int x,int y) { return (xy)*10; } c语言中,用宏函数 #define add(x,y) (((x)(y))*10) 若不加括号会出现一些问题 宏优势 不需要建立栈帧,提高调用效率&a…

【文末送书】2023年以就业为目的学习Java还有必要吗?

前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

软件测试7大误区

随着软件测试对提高软件质量重要性的不断提高,软件测试也不断受到重视。但是,国内软件测试过程的不规范,重视开发和轻视测试的现象依旧存在。因此,对于软件测试的重要性、测试方法和测试过程等方面都存在很多不恰当的认识&#xf…

外卖配送系统开发指南:打造高效、智能的外卖服务

随着外卖市场的蓬勃发展,餐厅和外卖平台需要不断提高外卖服务的效率和智能性,以满足不断增长的需求。在本文中,我们将探讨如何开发一个高效、智能的外卖配送系统,同时提供一些关键代码示例来帮助您入门。 环境准备 在开始外卖配…

驱动开发 day3

总结:自动创建设备节点udev的流程 1.如何创建节点 手动创建:mknod 地址 设备文件类型 主设备号 次设备号(0 - 255) 自动创建:devfs (创建节点的逻辑在内核 ---> 2.4版本以前使用) udev (创建节点的逻辑在应用层) mdev (轻量级的udev) 2.…

图论第一天|深度优先搜索理论基础、广度优先搜索理论基础、797.所有可能的路径

深度优先搜索理论基础 文档讲解 : 代码随想录 - 深度优先搜索理论基础Hello 算法 9.3 图的遍历 状态:开始学习。 dfs(深度优先搜索)与bfs(广度优先搜索)区别 dfs是可一个方向去搜,不到黄河不回…

视频监控/安防监控/AI视频分析/边缘计算EasyCVR平台如何调取登录接口获取token?

安防视频监控管理平台/视频汇聚/视频云存储平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、云存储、AI智能分析等,视频监控智能分析平台EasyCVR融合性强、…

(JavaEE)线程的状态

前言:进程的状态,最核心的就是 就绪状态 和 阻塞状态,这对于线程同样适用,在Java中,又赋予了线程一些其他的状态。 线程的所有状态 NEW : Thread对象已经有了,但是start 方法还没调用。TERMINATED : Thre…

uniapp H5生成画布,插入网络图片。下载画布

因为网络图片不能直接使用ctx.drawImage()插入。得使用uni.getImageInfo()方法下载后插入。 但是当画布中存在多张网络图片时,必须等待uni.getImageInfo()下载完成后才行。这样得下载套下载。太过于繁琐。所以定义了一个递归下载方法。同时避免下载图片异…

【数据结构】长篇详解堆,堆的向上/向下调整算法,堆排序及TopK问题

文章目录 堆的概念性质图解 向上调整算法算法分析代码整体实现 向下调整算法算法分析整体代码实现 堆的接口实现初始化堆销毁堆插入元素删除元素打印元素判断是否为空取首元素实现堆 堆排序创建堆调整堆整合步骤 TopK问题 堆的概念 堆就是将一组数据所有元素按完全二叉树的顺序…

四川玖璨电子商务有限公司:新媒体视频运营

新媒体视频运营是随着互联网技术的发展而兴起的一种新型媒体运营方式。它通过制作、发布和推广优质视频内容,以吸引受众眼球,提升品牌知名度和影响力。四川玖璨电商小编在此次新媒体视频运营实验中,我们对新媒体视频运营的关键要素进行了探索…

大数据精准营销适合什么行业,面临哪些问题?

大数据营销适合的行业还是非常多的,毕竟现在大部分的企业都是通过网络方式来获得客户的,只要同领域有网站,而且他们存在竞价或者是优化,或者是使用了相关的软件,这种情况下都是完全可以运用的。比较常见的行业有金融行…

高端知识竞赛中选手台桌设计方案和配套软件

高端知识竞赛选手台桌用于知识竞赛现场选手台,集成了知识竞赛软硬件设备,包括台前计分一体机或LED屏、抢答按钮等,和天纵竞赛软件配合使用,实现高端竞赛的计分需要。 知识竞赛选手台桌前计分屏可以显示丰富的内容,包括…

(JavaEE)多线程带来的的风险-线程安全 (第一部)

前言:线程安全是整个多线程中,最为复杂的部分,也是最重要的部分。 目录 什么是线程安全问题? 线程不安全的原因 ⁜⁜总结 :线程安全问题的原因 ⁜⁜ 解决方法1 ——加锁 synchronized (监视器锁monitor…

客户画像的作用是什么?

1、深度挖掘 客户画像包括客户的基本信息和个人行为数据,这些都可以作为企业成员和客户沟通的基础,且在此基础上可以更好地共情并深度挖掘客户真正想要什么。 2、分层精细运营 根据客户画像能充分了解客户的需求,再结合产品属性和企业文化…