我正在我的應(yīng)用程序中進(jìn)行用戶身份驗(yàn)證,這是通過jwt保存的cookie完成的,當(dāng)我發(fā)出請(qǐng)求時(shí),客戶端可以毫無問題地獲取cookie,但是當(dāng)客戶端更新頁(yè)面或僅f5時(shí),cookie被刪除,我正在調(diào)查它是否發(fā)生在localhost上或我的代碼中存在問題, 但我沒有找到與我的問題有關(guān)的任何東西。這是我在 Go 中的代碼:func Login(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") u := model.User{} if err := json.NewDecoder(r.Body).Decode(&u); err != nil { http.Error(w, "format incorrect", http.StatusBadRequest) return } user, equals, err := u.AccessControll(u.Email, u.Password) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } if !equals { http.Error(w, "ups", http.StatusBadRequest) return } token, err := jwt.CreateToken(user) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } cookie := http.Cookie{ Name: "token", Value: token, Expires: time.Now().Add(5 * time.Minute), HttpOnly: true, } http.SetCookie(w, &cookie)}
1 回答

紅顏莎娜
TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊
瀏覽器默認(rèn)將 Cookie 路徑設(shè)置為請(qǐng)求路徑。如果 Cookie 路徑不是請(qǐng)求路徑的路徑前綴,則瀏覽器不會(huì)發(fā)送 Cookie。問題中的 cookie 僅針對(duì)對(duì)登錄處理程序路徑及其下方路徑的請(qǐng)求進(jìn)行設(shè)置。
將 Cookie 路徑設(shè)置為“/”,以使 Cookie 在所有路徑上都可用。
這可能不相關(guān),但最好設(shè)置MaxAge而不是 Expires,因?yàn)镸axAge不受時(shí)鐘偏差的影響。
cookie := http.Cookie{
Name: "token",
Value: token,
Path: "/",
MaxAge: 5 * 60,
HttpOnly: true,
}
- 1 回答
- 0 關(guān)注
- 95 瀏覽
添加回答
舉報(bào)
0/150
提交
取消