現象は
Cookieの削除を行っていたサイトが、突然、削除処理が動作しなくなり、バグを生み出すようになった。
ブラウザ、Chrome、Firefox、SafariなどでSameSite属性が導入されたため。
ただ、現象が発生するのは、Chrome 85だけであり、Firefox 80は発生しない。MacのSafari 13.1.2は、発生しませんでした。
サーバサイドのロジック
サーバサイドでCookieを削除する場合は、有効期限を設定して削除する必要があります。
var cookie = context.Request.Cookies[KEY_COOKIE];
if (cookie != null)
{
cookie.Expires = DateTime.Now.Date.AddDays(-1d);
// 設定したパスが受け取れないため、アプリケーションパスをパスに再設定
cookie.Path = GetApplicationPath(context.Request);
context.Response.SetCookie(cookie);
}
レスポンスの解析結果
動作している場合のResponse(Chrome)
渓谷の内容は、
- エラーメッセージ
This Set-Cookie was blocked because it had the "SameSite=None" attribute but did not hae the "Secure" attribute, which is required in order to use "SameSite=None"
- 日本語
このSet-Cookieは、「SameSite = None」属性があったが、「SameSite = None」を使用するために必要な「Secure」属性を持っていなかったため、ブロックされました。
対応のロジック
none
対応は、サーバへのリクエストのResponseを見て、クライアントでCookieの操作を行い対応しました。
- Chrome 80からの変更
クッキーの新しい属性 SameSite に対応する方法 | asp.net
- この方法は、.NET Framework 4.7.2が必要となります。
ChromeでSameSite Cookieを正しく削除する方法(80以降)
- 削除されない理由、対応方法が記載されいます。