HTTPリクエストとHTTPレスポンスでクッキー(HTTP Cookie)を確認します。
クッキーの発行は、PHPを使用しています。
| 確認環境 ・Windows10 ・Google Chrome ・PHP 7.2.8 |
目次
- クッキーの流れ
- クッキーをセットするコード
- 初回表示時のHTTPリクエストとHTTPレスポンス
- リロード時のHTTPリクエストとHTTPレスポンス
- Chromeブラウザでクッキーを確認する
- クッキー関連のメソッド
クッキーの流れ

1.クライアントがWebサーバーにアクセスします。
2.Webサーバーにあるプログラムがクッキーを発行してクライアントに送ります。
3.再度クライアントがWebサーバーにアクセスする時、Webサーバーにあるプログラムはクライアントのクッキーを取得して識別します。
以下は、MDNのHTTP Cookieのリンクです。
https://developer.mozilla.org/ja/docs/Web/HTTP/Cookies
クッキーをセットするコード
以下は、PHPのクッキーを発行するコードです。
画面をリロードすると、数値が1つずつ上がっていきます。
<?php
setcookie("count",1);
setcookie("dummy","d");
if(!isset($_COOKIE["count"])){
$rec = "初回表示時";
} else{
$rec = "{$_COOKIE["count"]}";
setcookie("count",$rec + 1);
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>select</title>
</head>
<body >
<?=($rec)?>
</body>
</html>
2,3行目のsetcookieは、名前と値を指定してクッキーをセットしています。
5行目の!issetでクッキーを確認しています。
最初の表示時の判定はtrueになり、画面に初回表示時と表示されます。
10行目は、クッキーの"count"の値に1を加算しています。
初回表示時のHTTPリクエストとHTTPレスポンス
初回表示時のHTTPリクエストとHTTPレスポンスです。
以下は、クライアントからサーバーに送信するHTTPリクエストです。
初回なのでクッキーはありません。
| GET http://localhost/test1/ HTTP/1.1 Host: localhost Connection: keep-alive Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KH Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,im Accept-Encoding: gzip, deflate, br Accept-Language: ja,en-US;q=0.9,en;q=0.8 |
以下は、HTTPレスポンスです。
サーバからクライアントにクッキーは渡されますが、上記コードの5-6行目のロジックを通ります。
| HTTP/1.1 200 OK Date: Fri, 09 Nov 2018 12:00:08 GMT Server: Apache/2.4.34 (Win32) OpenSSL/1.1.0h PHP/7.2.8 X-Powered-By: PHP/7.2.8 Set-Cookie: count=1 Set-Cookie: dummy=d Content-Length: 140 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html; charset=UTF-8 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>select</title> </head> <body > 初回表示時 </body> </html> |
リロード時のHTTPリクエストとHTTPレスポンス
リロードをしたときのHTTPリクエストとHTTPレスポンスです。
以下は、HTTPリクエストです。
最終行はクッキーです。
クライアントからサーバーにクッキーを送信しています。
| GET http://localhost/test1/ HTTP/1.1 Host: localhost Connection: keep-alive Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 Accept-Encoding: gzip, deflate, br Accept-Language: ja,en-US;q=0.9,en;q=0.8 Cookie: count=1; dummy=d |
以下は、HTTPレスポンスです。
サーバで処理された値がクッキーとしてクライアントに送信されます。
| HTTP/1.1 200 OK Date: Fri, 09 Nov 2018 12:00:10 GMT Server: Apache/2.4.34 (Win32) OpenSSL/1.1.0h PHP/7.2.8 X-Powered-By: PHP/7.2.8 Set-Cookie: count=1 Set-Cookie: dummy=d Set-Cookie: count=2 Content-Length: 126 Keep-Alive: timeout=5, max=98 Connection: Keep-Alive Content-Type: text/html; charset=UTF-8 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>select</title> </head> <body > 1 </body> </html> |
Chromeブラウザでクッキーを確認する
Google Chromeのデベロッパーツールでクッキーを確認できます。
「F12」キーを押してデベロッパーツールを開き、「Application」→「Cookies」→「http://localhost」をクリックします。
下の図では「dummy」と「count」はクッキーの名前で、「d」と「3」はクッキーの値です。
中央の丸に斜め線が入ったアイコンは、クッキーをクリアします。

クッキー関連のメソッド
以下は、PHPのクッキー関連のメソッドです。
クッキーを削除する場合は、
setcookie("名前","")にします。
setcookie("cnt1","");
クッキーの有効期限を設定する場合は、
setcookie(名前,値,有効期限)にします。
以下は上から有効期限を1分、1時間、1日、1週間としています。
setcookie("cnt1",1,time() + 60);
setcookie("cnt1",1,time() + 60 * 60);
setcookie("cnt1",1,time() + 24 * 60 * 60);
setcookie("cnt1",1,time() + 7 * 24 * 60 * 60);
リンク
- 以下はPHPマニュアルのクッキーのリンクです。
http://php.net/manual/ja/features.cookies.php
関連の記事
XAMPPをインストールする手順(Windows10)
セッションを確認する(HTTPリクエストとHTTPレスポンスで確認)
「HTTPリクエスト」と「HTTPレスポンス」