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

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

Barbara Streisand
Barbara Streisand原创
2024-12-10 04:43:18843浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn