5

作为 Golang 的新手,尝试在浏览器上设置 cookie,具有简单的基本代码,但它根本不起作用,并进行了一些谷歌搜索并发现了一些 stackoverflow ex。但仍然没有选择正确的方法。

创建了一个简单的hello.go

package main

import "io"
import "net/http"
import "time"

func handler(w http.ResponseWriter, req *http.Request) {
    expire := time.Now().AddDate(0, 0, 1)
    cookie := http.Cookie{"test", "tcookie", "/", "www.dummy.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("/", handler)
}

但正如预期的那样,这里面临着错误\hello.go:9:15: composite struct literal net/http.Cookie with untagged fields

任何人都可以建议我或给我设置cookie的基本示例(详细)。

在 SO 上几乎没有搜索并发现.. 在 Golang (net/http) 中设置 Cookie但无法正确获取..

谢谢。

4

2 回答 2

6

cookie := http.Cookie{"test", "tcookie", "/", "www.dummy.com", expire, expire.Format(time.UnixDate), 86400, true, true, "test=tcookie", []string{"test=tcookie"}}

应该是这样的:

cookie := &http.Cookie{Name:"test", Value:"tcookie", Expires:time.Now().Add(356*24*time.Hour), HttpOnly:true}

在这之后

改变

req.AddCookie(&cookie)

http.SetCookie(w, cookie)

最后因为您的应用程序在 Google App Engine 上运行,因此发生了变化:

func main()

func init()

于 2013-06-14T07:19:17.113 回答
5

好吧,在您链接到它的问题中,基本上说要从以下位置使用此功能net/http

func SetCookie(w ResponseWriter, cookie *Cookie)

所以在你的例子中而不是写

req.AddCookie(&cookie)

你应该写这个

http.SetCookie(w, &cookie)
于 2013-06-13T11:42:19.733 回答