我正在创建一个会话,会话/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。
2 回答
郎朗坤
TA贡献1921条经验 获得超9个赞
这是一个问题,因为当我转到另一条路径时无法检测到 cookie。
如果set cookie响应头中没有设置path参数,则客户端将cookie的路径设置为请求路径。仅当 cookie 的路径是请求路径的路径前缀时,客户端才会向服务器发送 cookie。
要使 cookie 对所有路径可用,请将路径设置为“/”。
session = &http.Cookie{
Name: "session-id",
Value: sessionID.String(), //uuid
Path: "/",
}
(因为整数的零值为 0,所以无需指定 MaxAge 值)。
拉风的咖菲猫
TA贡献1995条经验 获得超2个赞
根据MDN:
Max-Age:cookie 过期之前的秒数。零或负数将使 cookie 立即过期
当查看SetCookie
调用 cookieString()
方法的 func 的源代码时,我们可以在第 208 行看到您的 cookie 年龄 0 不会被写入请求 - 您的 cookie 应该被接受。
可能还有其他因素导致此 cookie 在用户代理端无效;服务器端似乎没问题。当您尝试不同的浏览器(例如 Firefox)时会发生什么?
- 2 回答
- 0 关注
- 123 浏览
添加回答
举报
0/150
提交
取消