1. ホーム
  2. http

[解決済み] サーバーサイドでCookieを削除する正しい方法

2022-04-20 23:48:14

質問

私の認証プロセスでは、ユーザーがログインするときに一意のトークンを作成し、それを認証に使用されるクッキーに入れます。

そこで、サーバーからこのようなものを送ります。

Set-Cookie: token=$2a$12$T94df7ArHkpkX7RGYndcq.fKU.oRlkVLOkCBNrMilaSWnTcWtCfJC; path=/;

これは、すべてのブラウザで動作します。それからクッキーを削除するために 私は同じようなクッキーを expires フィールドは1970年1月1日に設定されています。

Set-Cookie: token=$2a$12$T94df7ArHkpkX7RGYndcq.fKU.oRlkVLOkCBNrMilaSWnTcWtCfJC; path=/; expires=Thu, Jan 01 1970 00:00:00 UTC; 

そして、これはFirefoxではうまくいくのですが、IEやSafariではCookieを削除できません。

では、(できればJavaScriptを使わずに)Cookieを削除する最良の方法は何でしょうか?set-the-expires-in-the-pastという方法はかさばるような気がします。また、なぜFFではうまくいくのに、IEやSafariではうまくいかないのでしょうか?

解決方法は?

同じCookieの値を ; expires を追加しても、Cookieは破壊されません。

空の値を設定することでクッキーを無効化し、そのクッキーの中に expires フィールドも作成します。

Set-Cookie: token=deleted; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT

すべてのブラウザでクッキーを強制的に削除することはできないことに注意してください。クライアントは、たとえ有効期限が切れていても、クッキーが持続するようにブラウザを設定することができます。上記のように値を設定することで、この問題は解決します。