我正在创建一个会话,创建会话/ 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。
答案 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,直到浏览器退出。