创建后删除Cookie?

时间:2019-12-01 08:37:28

标签: go cookies session-cookies

我正在创建一个会话,创建会话/ cookie后,它会立即消失

session, err := r.Cookie("session-id")

if err != nil {
session = &http.Cookie{
                    Name:   "session-id",
                    Value:  sessionID.String(), //uuid
                    MaxAge: 0,
                }
http.SetCookie(w, session)
}

我不确定是否要删除它,但是创建cookie的那一刻,它立即从Google chrome(应用程序/ cookies)中消失了。这是一个问题,因为我在转到其他路径时无法检测到Cookie。

3 个答案:

答案 0 :(得分:1)

  

这是一个问题,因为我在转到其他路径时无法检测到Cookie。

如果未在设置cookie响应头中设置path参数,则客户端会将cookie的路径设置为请求路径。客户端仅在Cookie的路径是请求路径的路径前缀时才向服务器发送Cookie。

要使cookie适用于所有路径,请将路径设置为“ /”。

session = &http.Cookie{
                Name:   "session-id",
                Value:  sessionID.String(), //uuid
                Path: "/",
            }

(由于整数的零值为0,因此无需指定MaxAge值)。

答案 1 :(得分:0)

根据MDN

  

最大年龄:cookie过期之前的秒数。零或负数将立即使Cookie失效

在查看SetCookie函数的源代码(调用cookie的String()方法)时,我们可以see in line 208将您的cookie年龄0不会写入请求中-您的Cookie应该会被接受。

可能还有其他因素可能导致该Cookie在用户代理端无效;服务器端似乎很好。尝试使用其他浏览器(例如Firefox)会怎样?

答案 2 :(得分:-3)

将MaxAge设置为0表示立即删除cookie。

使用-1存储cookie,直到浏览器退出。

相关问题