/images/avatar.webp

五岁博客

Go Gin设置Cookie及参数安全指南:从入门到生产环境配置

Cookie 是 Gin 开发中绕不开的知识点,但基础用法易踩安全坑,今天分享下从入门到生产环境的设置方法和安全要点,希望能够帮助大家少走弯路。

一、设置cookie

func main() {
    r := gin.Default()
    r.GET("/set", func(c *gin.Context) {
        c.SetCookie("user_token", "abc123", 3600, "/", "localhost", false, true)
        c.String(200, "Cookie写入成功!")
    })
    r.Run(":8080")
}

浏览器访问 http://localhost:8080/set 即可查看Cookie

Go 关键字 defer 使用详解(使用场景易错分析)

核心原理

defer 是 Go 语言的一大特性,defer 的字面意思是“延迟”,但很多人只知道它“延迟执行”,却不懂背后的逻辑,这是踩坑的根源。

先记住 3 个核心原理:

  1. 执行时机:defer 修饰的函数会在“所在函数执行完 return 语句后、真正返回前”执行,不是在函数结束时才执行,也不是在 defer 定义时执行;
  2. 参数预计算:defer 修饰的函数的参数,在定义 defer 时就会计算出具体值,而不是在执行 defer 时才计算;
  3. 栈式执行:多个 defer 同时存在时,遵循“后进先出”(LIFO)的栈式顺序,最后定义的 defer 最先执行。

用 defer 可以来声明一些延迟函数,这些延迟函数会被放进队列里,在外层函数执行完成后会依次执行延迟函数: