起こったこと
Chromeから以下の警告が出て、クロスサイトのレスポンスに含まれるCookieを保存できなかった
Set-Cookieヘッダーを介してCookieの設定を試みましたが、「SameSite=Lax」属性は指定されていたものの、トップレベルナビゲーションへのレスポンスではないクロスサイトレスポンスが送信元だったため、ブロックされました。
やっていたこと
- ローカルで
https://localhost:8080/{何かしらのpath}
にアクセスするとHTML・JSを返すサーバーを起動した - ローカルサーバーから返されるJSはトップレベルナビゲーションの変化が起きないクロスサイトリクエストを行った
- 宛先は仮に
subdomain.site.com
とする
- クロスサイトは
Set-Cookie
ヘッダーを含むレスポンスを返却した - HTMLは再度同様のクロスサイトにクッキーを含むリクエストを送る想定だった
しかし、クロスサイトにクッキーを送れておらず、原因を探ったところChromeからクッキー保存をブロックした旨の警告が出ていた
対応
以下の2点を実施したところ、クッキーを保存してくれるようになった
- ローカルサーバーのURLを
https://localhost.site.com:8080/{何かしらのpath}
に変更し、クロスサイトのドメインと合わせた - hostsファイルを編集し、
127.0.0.1
とlocalhost.site.com
を関連づけた
原因について
対応結果からの推測になるが、おそらくChromeはURLバーに表示されているドメインとクロスリクエスト先のドメインが一致していないと、クロスリクエスト先からのCookieを保存してくれない模様