从服务器使用 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中文网其他相关文章!