gpt4 book ai didi

go - 设置 cookie 不被检测

转载 作者:数据小太阳 更新时间:2023-10-29 03:31:42 29 4
gpt4 key购买 nike

我在尝试检索已设置的 cookie 时遇到问题,如果未设置,我想更新它然后检索它。

首先,我有一个设置 cookie 的函数:

func IndexHandler(w http.ResponseWriter, r *http.Request) {
...
ck := http.Cookie{
Name: "id",
Value: 5,
MaxAge: 60,
}
}

然后在另一个函数中我检查该 cookie 是否存在,如果它(抛出错误)然后我重新创建它

func CheckUpdateCookie(w http.ResponseWriter, r *http.Request) {
val, err := r.Cookie("id")
if err != nil {
ck := http.Cookie{
Name: "id",
Value: 5,
MaxAge: 60,
}

http.SetCookie(w, &ck)
CheckUpdateCookie(w, r)
}
}

这会导致它进入无限循环并且无法识别已再次设置 cookie,如果我打印错误我会得到 http: named cookie not present 即使我已经设置了 cookie在函数体中。

最佳答案

r.Cookie("id") 的调用读取请求中的“Cookie” header 。

http.SetCookie(w, &ck) 的调用会在响应中添加一个“Set-Cookie” header 。该调用不会修改请求。

不要递归地调用函数来获取 cookie(由于上述原因这不起作用),只需使用您手头的 cookie:

func CheckUpdateCookie(w http.ResponseWriter, r *http.Request) {
val, err := r.Cookie("id")
if err != nil {
val := &http.Cookie{
Name: "id",
Value: 5,
MaxAge: 60,
}
http.SetCookie(w, val)
}
// val is now set to the cookie.
}

通常将路径设置为“/”,这样 cookie 在所有路径上都可用:

        val := &http.Cookie{
Name: "id",
Value: 5,
MaxAge: 60,
Path: "/",
}

关于go - 设置 cookie 不被检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47626574/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com