第8章 リクエスト情報 / 第5回 模擬試験

PHPのクッキー授受の仕組みに関する次の記述のうち、正しいものはどれか。

クッキーはサーバーから送られたレスポンスヘッダーに含まれ、以降のリクエストでブラウザが自動的に送り返す。 正解
クッキーはブラウザが独自に生成し、サーバーには一切送信されない情報である。
クッキーの有効期限は一度設定すると変更できない。
クッキーはJavaScriptやPHPを問わず、絶対に読み取ることができない情報である。
解説
サーバーがHTTPレスポンスの`Set-Cookie`ヘッダーでクッキーを送ると、ブラウザはそれを保存し、以降その同じサーバーへ送るリクエストのたびに`Cookie`ヘッダーへ自動的に含めて送り返します。 他の選択肢が誤りである理由は次の通りです。 ・クッキーは通常、サーバー側が`setcookie()`関数などを通じて発行し、ブラウザに保存させるものです。「ブラウザが独自に生成し、サーバーには送信されない」というのは逆の説明です。 ・クッキーの有効期限は、同名のクッキーを新しい有効期限で`setcookie()`し直すことで変更(更新)できます。「一度設定すると変更できない」は誤りです。 ・クッキーはPHP側では`$_COOKIE`スーパーグローバル変数で、JavaScript側では`document.cookie`で読み取ることができます。「絶対に読み取れない」は誤りです。 例: ``` setcookie('lang', 'ja', time() + 60 * 60 * 24 * 30); // 次回以降のリクエストで自動的にCookieヘッダーに含まれて送られてくる echo $_COOKIE['lang'] ?? 'ja'; ``` (参照: 独習PHP 第4版 第8章 リクエスト情報 8.6.2節 クッキー授受の仕組み p.385〜386)