首页 > 其他分享 >Golang gin Cookie的使用

Golang gin Cookie的使用

时间:2023-10-03 10:06:33浏览次数:36  
标签:cookie string err Golang Cookie 服务器 gin


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

Golang gin Cookie的使用_服务器

Golang gin Cookie的使用_golang_02

标签:cookie,string,err,Golang,Cookie,服务器,gin
From: https://blog.51cto.com/u_14035463/7689615

相关文章

  • Golang Array 数组使用注意事项和细节
    在go数组当中,长度是数据类型的一部分[3]int  *[3]int  数组使用注意事项和细节1)数组是多个相同类型数据的组合,一个数组一旦声明/定义了,其长度是固定的,不能动态变化vara[3]inta[0]=1.1这样是不行的,必须是整数2)vararr[]int这时arr就是一个slice切片(如果[]里面没......
  • 在Kubernetes环境中有关Nginx Ingress与API Gateway的连接问题
    文章目录小结问题解决参考小结在Kubernetes环境中是通过NginxIngress来从外部访问Kubernetes内部的环境,并用APIGateway来分发请求,碰到了502Badgateway.的问题,并尝试解决。问题从外部通过NginxIngress访问Kubernetes内部的环境APIGateway,返回错误:502Badgateway.这里API......
  • 解决ERROR oslo_messaging.rpc.server UnixHTTPConnectionPool(host=‘localhost‘, p
    zun.common.exception.ZunException:Unexpectederror:UnixHTTPConnectionPool(host=‘localhost’,port=None):Readtimedout.(readtimeout=60)2023-09-1317:26:08.6498468ERRORoslo_messaging.rpc.server[req-6ff62c08-fd25-4df6-8a81-d144956cbbd97db25ffff6314......
  • Cookie和Session
    1.前言Cookie和Session是Web开发中常用的概念,用于在客户端和服务器之间存储和跟踪用户信息。2.Cookie2.1什么是CookieCookie意为“甜饼”,是由W3C组织提出,最早由Netscape社区发展的一种机制。目前Cookie已经成为标准,所有的主流浏览器如MicrosoftEdge、Firefox、GoogleChro......
  • EasyLogin
    打开是个登录界面 随便输入点什么东西但是没什么用,那就注册一个账号然后登录登录成功后是这样的一个画面 试着交互一下发现没啥反应 F12也没啥线索 这个时候再回去看看题目,发现是简单的登录,所以应该得从登录方向思考 首先想到的是弱口令爆破,这个时候就bp抓包爆破......
  • AtCoder Beginner Contest 178 E
    AtCoderBeginnerContest178EE-DistMax曼哈顿距离最大点对\(ans=max(|x_i-x_j|+|y_i-y_j|)\)考虑去绝对值,4种情况。sort一下取max即可。#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintN=2e5+10;intx[N],y[N];intp[4][N];......
  • Nginx简介与Docker Compose部署指南
    Nginx是一款高性能的开源Web服务器和反向代-理服务器,以其卓越的性能、可伸缩性和灵活性而闻名。它在全球范围内广泛用于托管Web应用程序、负载均衡、反向代-理和更多场景中。在本文中,我们将首先介绍Nginx的基本概念,然后演示如何使用DockerCompose轻松部署Nginx服务器。什么是Nginx......
  • AtCoder Beginner Contest 322
    A-FirstABC2解题思路签到Code#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;voidsolve(){ intn; cin>>n; strings; cin>>s; intp=s.find("ABC"); if(p==-1)cout<<p<<'\n&......
  • nginx跨域
    add_header'Access-Control-Allow-Origin'*;#允许带上cookie请求add_header'Access-Control-Allow-Credentials''true';#允许请求的方法,比如GET/POST/PUT/DELETEadd_header'Access-Control-Allow-Methods'*;#允许请求的headeradd_hea......
  • 【Nginx23】Nginx学习:响应头与Map变量操作
    Nginx学习:响应头与Map变量操作响应头是非常重要的内容,浏览器或者客户端有很多东西可能都是根据响应头来进行判断操作的,比如说最典型的Content-Type,之前我们也演示过,直接设置一个空的types然后指定默认的数据类型的值,所有的请求浏览器都会直接下载。另外,我们现在在做前后分离的......