首页 > 其他分享 >Gin中的Cookie

Gin中的Cookie

时间:2024-01-17 11:12:13浏览次数:27  
标签:cookie xxx Cookie 设置 gin Gin com

Gin中的Cookie

1 Cookie简介

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

2 Cookie能实现的功能

/*
    1、保持用户登录状态
    2、保存用户浏览的历史记录
    3、猜你喜欢,智能推荐
    4、电商网站的加入购物车
*/

3 设置和获取Cookie

import (
    "fmt"

    "github.com/gin-gonic/gin"
)

func main() {

    router := gin.Default()

    router.GET("/cookie", func(c *gin.Context) {

        cookie, err := c.Cookie("gin_cookie") // 获取cookie

        if err != nil {
            cookie = "NotSet"

            c.SetCookie("gin_cookie", "test", 3600, "/", "localhost", false, true) // 设置cookie
        }

        fmt.Printf("Cookie value: %s \n", cookie)
    })

    router.Run()
}

/*
	c.SetCookie(name, value string, maxAge int, path, domain string, secure, httpOnly bool)
	name : cookie名称
	value : cookie值
	maxAge : 过期时间(秒)如果只想设置Cookie的保存路径而不想设置存活时间,可以在第三个参数中传递nil
	path : cookie生效的路径
	domain : cookie的路径Domain作用域 本地调试配置成localhost,正式上线配置成域名,不写的话就是所有域都可以
	secure : 当secure值为true时,cookie在HTTP中是无效的,在HTTPS中才有效
	httpOnly : 是微软对COOKIE做的扩展。如果在COOKIE中设置了“httpOnly"属性,则通过程序(JS脚本、applet等)将无法读取到COOKIE信息,防止XSS攻击产生

*/

4 删除Cookie

只需要重新设置过期时间 让它小于0就行了

c.SetCookie("gin_cookie", "test", -1, "/", "localhost", false, true) 

5 多个二级域名共享cookie

/*
	1.讲二级域名解析
	 a.xxx.com
	 b.xxx.com


    2、我们想的是用户在a.xxx.com中设置Cookie信息后在 b.xxx.com中获取刚才设置的cookie,也就是实现多个二级域名共享cookie
    这时候的话我们就可以这样设置cookie
    
    c.SetCookie("usrename","张三",3600,"/",".xxx.com", false,true)

	.xxx.com 让所有属于它的二级域名共享cookie
*/

标签:cookie,xxx,Cookie,设置,gin,Gin,com
From: https://www.cnblogs.com/chunyouqudongwuyuan/p/17969515

相关文章

  • GIn入门
    Gin入门1.Gin安装goget-ugithub.com/gin-gonic/gin2.将gin引入到代码中:import"github.com/gin-gonic/gin"2.1(可选)如果使用诸如http.StatusOK之类的常量,则需要引入net/http包:import"net/http"2.2初始化gomodgomodinit/*生成go.mod文件,此命令会在当......
  • 出现了HTTPSConnectionPool(host=‘huggingface.co‘, port=443)错误的解决方法
    在下载huggingface模型的时候,经常会出现这个错误,HTTPSConnectionPool(host=‘huggingface.co’,port=443)。如在下载Tokenizer的时候,tokenizer=AutoTokenizer.from_pretrained("csebuetnlp/mT5_multilingual_XLSum")就会出现以上的错误HTTPSConnectionPool(host=‘hug......
  • Inserting a node at beginning,全局变量头指针【1月16日学习笔记】
    点击查看代码//insertinganodeatbeginning,全局变量头指针#include<iostream>usingnamespacestd;structnode{ intdata; node*next;};node*A;voidinsert(intx){ node*temp=newnode;//创建新节点 temp->data=x; temp->next=A;//新节点尾巴指......
  • Inserting a node at beginning,局部变量头指针版本1【1月16日学习笔记】
    点击查看代码//insertinganodeatbeginning,局部变量头指针版本1#include<iostream>usingnamespacestd;structnode{ intdata; node*next;};node*insert(intx,node*A){ node*temp=newnode;//创建新节点 temp->data=x; temp->next=A;//新节......
  • Inserting a node at beginning,局部变量头指针版本2【1月16日学习笔记】
    点击查看代码//insertinganodeatbeginning,局部变量头指针版本2#include<iostream>usingnamespacestd;structnode{ intdata; node*next;};voidinsert(intx,node**A){ node*temp=newnode;//创建新节点 temp->data=x; temp->next=*A;//新......
  • FlaskSQLAlchemy中的Pagination类型对象
    FlaskSQLAlchemy中的Pagination类型对象。一个Query对象调用paginate方法就获得了Pagination对象。paginate方法传入了两个参数,一个是当前页,另一个是每一页最多显示多少博客。paginate的返回值为代表当前页的Pagination对象。一个Paginationi对象的常用属性有:items当前页面中的......
  • 15、nginx的rewrite机制
    1.概述Rewrite主要的功能就是实现URL的重写。Nginx的Rewrite规则采用PCRE(PerlCompatibleRegularExpressions)Perl兼容正则表达式的语法进行规则匹配。通过Rewrite规则,可以实现规范的URL、根据变量来做URL转向及选择配置。例如,一些使用MVC框架的程序只有一个入口,可以通过......
  • Nginx转发解析长域名多路径域名
    Nginx解析短域名,例如:访问http://192.168.1.23可直接跳转到http://192.168.1.23/webroot/decisionserver{listen90;server_namelocalhost;#匹配/转到/webroot/decision上;#^(.*)$表示/后任意部分,除非和其他location匹配否则一律转向/webroot/decisio......
  • Mygin实现简单的路由
    本文是Mygin第二篇目的:实现路由映射提供了用户注册静态路由方法(GET、POST方法)基于上一篇Mygin实现简单Http且参照Gin我使用了map数组实现简单路由的映射关系不同的method对应一个组,Gin框架初始化时map时初始化9个,因为支持的http.method刚好为9个packagehttp//Gin......
  • Mygin 实现简单Http
    本篇是完全参考gin的功能,自己手动实现一个类似的功能,帮助自己理解和学习gin框架目的简单介绍net/http库以及http.Handler接口实现简单的功能标准库启动Web服务import"net/http"funchelloHandler(whttp.ResponseWriter,r*http.Request){ w.Write([]byte("hellowor......