我正在尝试使用Go的net/http包设置cookie。我有:
package main
import "io"
import "net/http"
import "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)
}
字符串
我试着用“饼干”搜索“Golang”,但没有得到任何好的结果。如果有人能给我指出正确的方向,我将不胜感激。
7条答案
按热度按时间ctehm74n1#
我不是围棋Maven,但我认为你在请求上设置了cookie,不是吗?您可能需要将其设置为响应。在net/http中有一个
setCookie
函数。这可能会有所帮助:http://golang.org/pkg/net/http/#SetCookie字符串
5jvtdoz22#
字符串
Requests
和ResponseWriter
之间有一个基本的区别,请求是浏览器将发送的内容型
响应是处理程序将发送的内容,类似于:
型
当浏览器发出请求时,它会包含该域的cookie,因为cookie是按域存储的,不能从跨域访问,如果您将cookie设置为HTTP,则只能从通过HTTP而不是通过JS设置的网站访问它。
因此,当从cookie中获取信息时,您可以通过r.cookie方法来实现,如下所示
型
https://github.com/thewhitetulip/Tasks/blob/master/views/addViews.go#L72-L75
但是当你要设置一个cookie时,你必须在响应编写器方法中完成它,请求是一个只读对象,我们响应它,把它想象成你从某人那里得到的文本消息,这是一个请求,你只能得到它,你输入的是一个响应,所以你可以在
更多详情:https://thewhitetulip.gitbooks.io/webapp-with-golang-anti-textbook/content/content/2.4workingwithform.html
tvmytwxo3#
下面的代码可以帮助你
字符串
qojgxg4l4#
下面展示了我们如何在我们的产品中使用Cookie:
字符串
acruukt95#
在我添加Path和MaxAge之前,它在Safari中对我不起作用。安全的和普通的饼干对我都有效
分享,以便它帮助像我一样被困2天以上的人:)
字符串
6tdlim6h6#
首先,您需要创建Cookie,然后使用http包的SetCookie()函数设置Cookie。
字符串
vddsk6oq7#
你可以使用大猩猩包来处理cookie,或者我会说安全cookie:http://www.gorillatoolkit.org/pkg/securecookie