Uso de la galleta de ginebra Golang

Introducción de cookies


  • HTTP es un protocolo sin estado: el servidor no puede registrar el estado de acceso del navegador, lo que significa que el servidor no puede distinguir si dos solicitudes son emitidas por el mismo cliente.
  • La cookie es una de las soluciones a la apatridia del protocolo HTTP. En chino significa cookie.
  • Una cookie es en realidad una pieza de información almacenada en el navegador por el servidor. Después de que el navegador tiene una cookie, esta información se enviará al servidor cada vez que envíe una solicitud al servidor. Una vez que el servidor recibe la solicitud, puede procesar la solicitud en función de esta información.
  • Las cookies son creadas por el servidor, enviadas al navegador y, finalmente, guardadas por el navegador.

Para qué se utilizan las cookies

  • El servidor de prueba envía una cookie al cliente y el cliente porta la cookie cuando realiza una solicitud.

 

 

Uso de cookies


  • Obtención de cookies :

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

Cookie devuelve la cookie nombrada proporcionada en la solicitud, o ErrNoCookie si no se encuentra. Y devuelve la cookie nombrada sin escape. Si varias cookies coinciden con el nombre indicado, solo se devolverá una cookie.

  • Configuración de cookies :
func (c *Context) SetCookie(name, value string, maxAge int, path, domain string, secure, httpOnly bool)

 SetCookie Agrega el encabezado Set-Cookie a los encabezados de ResponseWriter . La cookie proporcionada debe tener un nombre válido. Las cookies no válidas pueden descartarse silenciosamente.

parámetro:

nombre: el nombre de la cookie

valor: valor de la cookie

maxAge int: tiempo de supervivencia de las cookies, la unidad es segundos

ruta: el directorio donde se encuentra la cookie

cadena de dominio: nombre de dominio

seguro: si solo se puede acceder a través de https

httpOnly bool: si se debe permitir que otros obtengan sus propias cookies a través de js

Ejemplo de demostración :

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"

 Ver cookies

Supongo que te gusta

Origin blog.csdn.net/qq_34556414/article/details/132837954
Recomendado
Clasificación