Salmon的全栈知识 Salmon的全栈知识
首页
  • JavaSE
  • JavaWeb
  • Spring生态
  • JUC
  • JVM
  • Netty
  • Java各版本特性
  • 23种设计模式
  • Maven
  • Java常用框架
  • Dubbo
  • OpenFeign
  • Nacos
  • Zookeeper
  • Sentinel
  • Seata
  • Gateway
  • Go基础
  • Gin
  • SQL数据库

    • MySQL
    • Oracle
  • NoSQL数据库

    • Redis
    • MongoDB
    • ElasticSearch
  • 消息中间件

    • RabbitMQ
    • RocketMQ
    • Kafka
    • ActiveMQ
    • MQTT
    • NATS
  • 网关中间件

    • Nginx
  • Linux
  • Docker
  • Git
  • K8s
  • Solidity
  • Java
  • 计算机网络
  • 操作系统
GitHub (opens new window)
首页
  • JavaSE
  • JavaWeb
  • Spring生态
  • JUC
  • JVM
  • Netty
  • Java各版本特性
  • 23种设计模式
  • Maven
  • Java常用框架
  • Dubbo
  • OpenFeign
  • Nacos
  • Zookeeper
  • Sentinel
  • Seata
  • Gateway
  • Go基础
  • Gin
  • SQL数据库

    • MySQL
    • Oracle
  • NoSQL数据库

    • Redis
    • MongoDB
    • ElasticSearch
  • 消息中间件

    • RabbitMQ
    • RocketMQ
    • Kafka
    • ActiveMQ
    • MQTT
    • NATS
  • 网关中间件

    • Nginx
  • Linux
  • Docker
  • Git
  • K8s
  • Solidity
  • Java
  • 计算机网络
  • 操作系统
GitHub (opens new window)
npm

(进入注册为作者充电)

  • Gin 介绍
  • Gin 环境搭建
  • golang 程序的热加载
  • Gin 框架中的路由
  • Gin HTML 模板渲染
  • 静态文件服务
  • 路由详解
  • Gin 中自定义控制器
  • Gin 中间件
  • Gin 中自定义 Model
  • Gin 文件上传
  • Gin 中的 Cookie
    • 1、Cookie 介绍
    • 2、Cookie 能实现的功能
    • 3、设置和获取 Cookie
    • 4 、多个二级域名共享 cookie
  • Gin 中的 Session
  • Gin 中使用 GORM 操作 mysql 数据库
  • 原生 SQL 和 SQL 生成器
  • Gin 中使用 GORM 实现表关联查询
  • GORM 中使用事务
  • Gin 中使用 go-ini 加载.ini 配置文件
  • 《Gin》笔记
Salmon
2025-04-03
目录

Gin 中的 Cookie

# 1、Cookie 介绍

  • HTTP 是无状态协议。简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页面,服务器无法认识到这是同一个浏览器在访问同一个网站。每一次的访问,都是没有任何关系的。如果我们要实现多个页面之间共享数据的话我们就可以使用 Cookie 或者 Session 实现

  • cookie 是存储于访问者计算机的浏览器中。可以让我们用同一个浏览器访问同一个域名的时候共享数据。

# 2、Cookie 能实现的功能

1、保持用户登录状态

2、保存用户浏览的历史记录

3、猜你喜欢,智能推荐

4、电商网站的加入购物车

# 3、设置和获取 Cookie

https://gin-gonic.com/zh-cn/docs/examples/cookie/ (opens new window)

设置 Cookie

c.SetCookie(name, value string, maxAge int, path, domain string, secure, httpOnly bool)

第一个参数:key

第二个参数:value

第三个参数:过期时间,如果只想设置 Cookie 的保存路径而不想设置存活时间,可以在第三个参数中传递 nil

第四个参数:cookie 的路径

第五个参数:cookie 的路径 Domain 作用域 本地调试配置成 localhost , 正式上线配置成域名

第六个参数是:secure ,当 secure 值为 true 时,cookie 在 HTTP 中是无效,在 HTTPS 中才有效

第七个参数:httpOnly,是微软对 COOKIE 做的扩展。如果在 COOKIE 中设置了“httpOnly”属性,则通过程序(JS 脚本、applet 等)将无法读取到 COOKIE 信息,防止 XSS 攻击产生

获取 Cookie

cookie, err := c.Cookie("name")

完整 demo

package main

import (
    "github.com/gin-gonic/gin"
    "html/template"
    "test6/models"
)

func main() {
    r := gin.Default()
    r.SetFuncMap(template.FuncMap{"unixToDate": models.UnixToDate})
    
    r.GET("/", func(c *gin.Context) {
       c.SetCookie("usrename", "张三", 3600, "/", "localhost", false, true)
       c.String(200, "首页")
    })
    
    r.GET("/user", func(c *gin.Context) {
       username, _ := c.Cookie("usrename")
       c.String(200, "用户-"+username)
    })
    
    r.Run(":9090")
}

# 4 、多个二级域名共享 cookie

1、分别把 a.itying.com 和 b.itying.com 解析到我们的服务器

2、我们想的是用户在 a.itying.com 中设置 Cookie 信息后在 b.itying.com 中获取刚才设置的 cookie,也就是实现多个二级域名共享 cookie

这时候的话我们就可以这样设置 cookie

c.SetCookie("usrename", "张三", 3600, "/", ".itying.com", false, true)
上次更新: 2025/04/05, 15:44:20
Gin 文件上传
Gin 中的 Session

← Gin 文件上传 Gin 中的 Session→

Theme by Vdoing | Copyright © 2022-2025 Salmon's Blog
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式