今していること
cakePHP3.6を使用し、ログイン認証後に "auth"というkeyのcookieを設置する
$this->response = $this->response ->withHeader("X-FRAME-OPTIONS", "SAMEORIGIN") ->withCookie('auth', [ 'value' => "hoge", 'path' => '/', 'secure' => false, 'httpOnly' => true, 'expire' => strtotime('+1 month'), ]) ->withLocation('http://localhost:4200');
困っていること
コード内に記載しましたが、cookie設置後にlocalhost:4200に遷移
→遷移先ではchromeのdevelop tool, application内にcookieが表示されない
→browser上の戻るボタンでlogin pageに戻ると、cookieがdevelop tool上で表示されている(言い換えればcookie自体は生成されている)
今まで試したこと
調べてみますと、大体の解決策がpathを '/'にする。でしたがその対策では効果がありませんでした。(コード内には既に記載済)
よろしくお願いします。
追記
$this->response = $this->response ->withHeader("X-FRAME-OPTIONS", "SAMEORIGIN") ->withCookie('auth', [ 'value' => "hoge", 'path' => '/', 'domain' => 'localhost:4200', 'secure' => false, 'httpOnly' => true, 'expire' => strtotime('+1 month'), ]) ->withLocation('http://localhost:4200');
「ちなみにdomainの設定をするとcookie自体生成されなくなります」
この文とコードを忘れておりました。
ちなみにdomain部分は '/' こうしてもcookie自体生成されません。
追記②
参考URLを元にconfig/app.phpに追記
→しかし挙動に変化なし
'Session' => [ 'defaults' => 'php', //以下ini部分を追記 'ini' => [ 'session.cookie_path' => '/', 'session.cookie_domain' => '.localhost:4200' ] ],
追記③
本番環境について(上記はlocalhostを使用するぐらいなので、開発環境です)
・LoginページのみcakePHPのviewを使用する(securityを考慮し、cakePHPのformを使用するため)
・login以外のページはangularを使用し同じサーバ内に設置、cakePHPをjsonデータを返すAPIとしか使用していない
となるとポート番号が違うだけなので、path => '/' と設置すれば良いだけかと思いますが、間違いないですかね。。?
追記④
「cookie "CAKEPHP" について」
参考までですが、よくみるとcakePHPで自動で生成される、keyがCAKEPHPのcookieも、localhost:4200にredirect後には送信されていなかった
→config/app.phpの'Session'にてdomainの設定をしてみる
→しかしoptionにdomainの項目はない
上記質問と直接は関係ありませんが、ここから何か分かるかもしれないという意図で追記しておきます

回答2件
あなたの回答
tips
プレビュー