首页 > 后端开发 > Golang > 如何使用Go的net/http包正确设置cookie?

如何使用Go的net/http包正确设置cookie?

Barbara Streisand
发布: 2024-12-10 04:43:18
原创
841 人浏览过

How Can I Correctly Set Cookies Using Go's net/http Package?

从服务器使用 Net/HTTP 设置 Cookie

本文解决了在 Go 中使用 net/http 包设置 Cookie 的问题。遇到困难时,您可能会求助于在线搜索,但结果并不理想。

让我们深入研究一下您提供的代码:

package main

import (
    "io"
    "net/http"
    "time"
)

func indexHandler(w http.ResponseWriter, req *http.Request) {
    expire := time.Now().AddDate(0, 0, 1)
    cookie := http.Cookie{"test", "tcookie", "/", "www.domain.com", expire, expire.Format(time.UnixDate), 86400, true, true, "test=tcookie", []string{"test=tcookie"}}
    req.AddCookie(&cookie)
    io.WriteString(w, "Hello world!")
}

func main() {
    http.HandleFunc("/", indexHandler)
    http.ListenAndServe(":80", nil)
}
登录后复制

正如您收到的回复中所强调的,您似乎在请求而不是响应上设置 cookie。为此,net/http 提供了一个名为 SetCookie 的方法:

func SetCookie(w ResponseWriter, cookie *Cookie)
登录后复制

要设置 cookie,您应该使用 SetCookie 函数,如下所示:

func indexHandler(w http.ResponseWriter, req *http.Request) {
    expire := time.Now().AddDate(0, 0, 1)
    cookie := http.Cookie{
        Name:    "test",
        Value:   "tcookie",
        Path:    "/",
        Domain:  "www.domain.com",
        Expires: expire,
        MaxAge:  86400, // duration in seconds.
        Secure:  true,
        HttpOnly: true,
    }
    http.SetCookie(w, &cookie)
    io.WriteString(w, "Hello world!")
}
登录后复制

通过将 cookie 设置为响应时,浏览器将接收 cookie 并相应地存储它。这将使您能够跟踪用户会话并在您的 Web 应用程序中提供个性化体验。

以上是如何使用Go的net/http包正确设置cookie?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板