CakePHP(v3.x)、セッション Cookieを利用する。

Cookieは値ををクライアントのブラウザに保存させ、過去の閲覧履歴や操作履歴に応じて表示情報を変化させることができます。 一方セッションは、クライアントのcookieに保存されているキーの値を元にサーバ側のデータベースやキャッシュに保存されている情報からクライアント側に与える情報を選択して返しています。

セッションCookieとは、ここであげられる後者のセッションとは別物で、前者のCookieに分類され、Cookieをブラウザに覚えさせておく期間がセッション中(ブラウザが立ち上がっている間)だけですよ、という技術です。 (CakePHPの公式を見ても、SessionCookieという単語を検索してSessionに関するものが出てくるのでしばらく悩みました。)

CakePHPでcookie有効期限をブラウザ終了までに指定し、セッションCookieとして値を保存したい時、以下のようにexpireにゼロを代入すると良いです。

$this->response = $this->response->withCookie(
    "MyCookieKey"
    [
        'value' => 'MyCookieValue',
        'expire' => 0 // ここを0にセットする
    ]
);

ちなみにCookieの情報は以下を参考にすると確認できます。 https://developers.google.com/web/tools/chrome-devtools/storage/cookies

セッションcookieとして保存した場合は、Expores / Max-AgeSessionとなっているはずです。