サーバー側とクライアント側で Cookie を作成することの違いは何ですか? これらはサーバー側 Cookie とクライアント側 Cookie と呼ばれますか? サーバー側またはクライアント側でのみ読み取り可能な Cookie を作成する方法はありますか?
ベストアンサー1
HTTP クッキー
Cookie は、Web サイトがブラウザに状態情報を保存するために使用するキーと値のペアです。Web サイト (example.com) があるとします。ブラウザが Web ページを要求すると、Web サイトは Cookie を送信してブラウザに情報を保存できます。
ブラウザリクエストの例:
GET /index.html HTTP/1.1
Host: www.example.com
サーバーからの応答例:
HTTP/1.1 200 OK
Content-type: text/html
Set-Cookie: foo=10
Set-Cookie: bar=20; Expires=Fri, 30 Sep 2011 11:48:00 GMT
... rest of the response
ここでは、foo=10 と bar=20 の 2 つの Cookie がブラウザに保存されています。2 番目の Cookie は 9 月 30 日に期限切れになります。以降の各リクエストでは、ブラウザは Cookie をサーバーに送り返します。
GET /spec.html HTTP/1.1
Host: www.example.com
Cookie: foo=10; bar=20
Accept: */*
セッション: サーバー側Cookie
サーバー側の Cookie は「セッション」と呼ばれます。この場合、Web サイトは、一意のセッション識別子を含む単一の Cookie をブラウザーに保存します。ステータス情報 (上記の foo=10 および bar=20) はサーバーに保存され、セッション識別子は、リクエストとサーバーに保存されているデータを照合するために使用されます。
使用例
セッションと Cookie の両方を使用して、認証データ、ユーザー設定、電子商取引 Web サイトのグラフのコンテンツなどを保存できます。
長所と短所
以下に、解決策の長所と短所を示します。これらは最初に思い浮かぶものですが、他にもきっとあるでしょう。
クッキーの長所:
- スケーラビリティ: すべてのデータはブラウザに保存されるため、各リクエストはロード バランサを経由して異なる Web サーバーに送信され、リクエストを満たすために必要なすべての情報が得られます。
- ブラウザ上の JavaScript 経由でアクセスできます。
- サーバー上に存在しないため、サーバーの再起動後も存続します。
- RESTful: リクエストはサーバーの状態に依存しない
クッキーの短所:
- ストレージは限られている80 KB(クッキー 20 個、各 4 KB)
- セキュアクッキーの実装は簡単ではありません。論文をご覧ください。安全なクッキープロトコル
セッションの長所:
- 一般的には使いやすく、PHP ではそれほど違いはないと思われます。
- 無制限のストレージ
セッションの短所:
- 拡大するのがより困難
- ウェブサーバーの再起動時に、実装によってはすべてのセッションが失われる場合があります。
- RESTfulではない