我正在創建一個會話,會話/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 關注
- 172 瀏覽
添加回答
舉報
0/150
提交
取消