iframe内のコンテンツのURLを開く際に、cookieが消えてしまう事象が発生した。
ifame内は別ドメインで動いているためcookieのセキュリティで別ドメインに送れず、別ドメインを経由して表示されたページではクッキーが消えているという状態だった。
別ドメインへcookieを送る方法
PHPでsetcookie()
を使ってクッキーをセットするときに、パラメータでセキュリティ等の詳細を設定することができる。
今回は別ドメインに対してもクッキーを送れるようにしつつ、最低限のセキュリティは保つようなパラメータを設定した。
setcookie('name', 'value', [
'path' => '/',
'secure' => true,
'httponly' => true,
"samesite" => 'None',
]);
上で設定しているパラメータの意味は次のとおり。
path
:サーバー上でcookieを有効としたいパスを記入。
'/'
をセットするとドメイン配下すべてで使用可能。
secure
:true
に設定するとhttps接続の場合のみcookieが送信される。
httponly
:true
に設定するとhttpを通してのみcookieにアクセス可となり、JSなどからアクセスできなくなる。
samesite
:現在のドメインから別ドメインへリクエストを送るときのcookieのセット可否
None
に設定すると別ドメインへクッキーを送れるようになる。
※samesite
をNone
に設定した場合は、セキュリティが最も緩い状態になるので、secure
やhttponly
など他のパラメータも同時に設定して最低限のセキュリティを確保する必要がある。