iframeでcookieが取得できなかったので調べたお話
セキュリティの設定は慎重に対応するので気をつかって疲れてしまいます。
それでも頑張らないといけないのでやってやります。
以前iframeを使って表示ができなかったのでセキュリティの設定をしました。
【NGINX】クリックジャッキング対策
別サイトでiframe使いたいけどセキュリティ設定に苦しめられた話
「test1.hoge」のとあるページを「test2.hoge」で表示したい。
普通にiframe使うと思いますが「test1.hoge」のセキュリティが効いて...
test1.hogeをtest2.hogeでiframe表示はOKになっています。
しかしログイン関連の画面でうまく動作できないことが判明しました。
NGINXの設定を見直したりワチャワチャしたのですが解決できません。
ログ等いろいろ調査した結果、cookieが正常に取得できていないことがわかりました。
js-cookie
cookieのセットに使われていたのはjs-cookieというJavaScriptライブラリです。
結構古くからあるようですが操作も簡単で人気があるみたいです。
べた書きに慣れているのでライブラリの便利さに感謝しながら調査しました。
下記のような感じでセットしています。
Cookies.set('COOKIE_NAME', 'value');
このままだとブラウザ(Chromeさん)がsamesiteをlaxと判断してしまい制限されてしまいます。
samesiteの値
Strict:cookie利用不可
Lax:POSTやiframe等はcookie利用不可
None:cookie利用可
Strict:cookie利用不可
Lax:POSTやiframe等はcookie利用不可
None:cookie利用可
なので明示的に記述してあげます、Chrome対策でsecureも。
Cookies.set('COOKIE_NAME', 'value', {path: '/', expires: 1, samesite: 'None', secure: true});
これで正常に動作するようになりました。
本家でもそのうちアップデートされるでしょう。
cookieの扱いは難しい!
コメント