[英]How delete the JSESSIONID cookie from the browser with HttpOnly flag set
[英]How do I delete a HttpOnly Cookie on the client?
我有一個網站,當用戶登錄時,它會創建一個存儲在內存中的訪問令牌和一個存儲在 HttpOnly cookie 中的刷新令牌。 當用戶注銷時,我想刪除 HttpOnly cookie。 但是,由於它是 HttpOnly 我無法使用 JavaScript 執行此操作,因此我的計划是從服務器發送另一個已過期的 cookie 並覆蓋有效的 cookie。 不幸的是,由於某種原因,這不起作用。
這就是我首先創建 cookie 的方式:
String refreshToken = issueRefreshToken(username);
long currentDate = Calendar.getInstance().getTimeInMillis();
Date expDate = new Date(currentDate + 60 * 24 * 7 * ONE_MINUTE_IN_MILLIS);
NewCookie newCookie = new NewCookie("RefreshCookie",
refreshToken,
"/",
null,
NewCookie.DEFAULT_VERSION,
"Comment",
60 * 60 * 24 * 7,
expDate,
false,
true);
// Return the token on the response
return Response.ok(accessToken).cookie(newCookie).header("Access-Control-Allow-Credentials", true).build();
這會按預期工作並創建一個有效期為一周的刷新 cookie。
我有另一個端點 (/logout) 創建另一個 cookie,假設它會覆蓋第一個。
@POST
public Response logout(){
NewCookie logoutCookie = new NewCookie(
"RefreshCookie",
null,
"/",
null,
NewCookie.DEFAULT_VERSION,
"",
0,
new Date(),
false,
true);
return Response.ok().cookie(logoutCookie).header("Access-Control-Allow-Credentials", true).build();
}
當未設置第一個客戶端時,此 cookie 甚至不會保存到前端。 我試圖從設置第一個 cookie 的子路徑發送它,但沒有運氣。 有什么我在這里想念的嗎? 這是錯誤的做法嗎?
從你所說的是你正在使用 httpOnly cookie,所以你必須明白一件事是,從客戶端你不會實現這一點,因為那樣會破壞擁有 httpOnly cookie 的目的,而不是那樣就像有一個普通的餅干。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.