atwiki-logo
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • このページの操作履歴
    • このウィキのページ操作履歴
  • ページ一覧
    • ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このウィキの更新情報RSS
    • このウィキ新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡(不具合、障害など)
ページ検索 メニュー
0x0b
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
0x0b
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
0x0b
ページ検索 メニュー
  • 新規作成
  • 編集する
  • 登録/ログイン
  • 管理メニュー
管理メニュー
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • このページの操作履歴
    • このウィキのページ操作履歴
  • ページ一覧
    • このウィキの全ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ一覧(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このwikiの更新情報RSS
    • このwikiの新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡する(不具合、障害など)
  • atwiki
  • 0x0b
  • htttp_cookie

0x0b

htttp_cookie

最終更新:2011年09月03日 21:22

Bot(ページ名リンク)

- view
管理者のみ編集可
PERSISTENT CLIENT STATE
HTTP COOKIES

CGIスクリプトのようなサーバ側コネクションにより、クライアント側に情報を保存させ、そしてそれを受け取るのに使うことができる一般的な構造
単純で永続的なクライアント側の状態を加えることによって、ウェブベースのクライアント/サーバアプリケーションの能力が大きく広がります。

概要

 サーバは、クライアントにHTTPオブジェクトを返す際、クライアントに保持してもらいたい状態情報を送ることができます。"状態オブジェクト"には、その状態が有効であるURLの範囲の記述が含まれています。その範囲に入るクライアントからの以後のHTTPリクエストは、クライアントからサーバに戻る状態オブジェクトの現在値の転送を含むでしょう。"状態オブジェクト"は、クッキーと呼ばれます。クッキーという名には、これといって大きな理由があるわけではありません)
 この簡易的なメカニズムは、ウェブベースの環境のためにパワフルな新ツールを提供します。それは、新しいタイプのアプリケーションのホストに実装されることを可能にします。ショッピングアプリケーションでは、その時点で選択されている商品に関する情報を溜めることができます。料金サービスでは、ユーザーの登録情報を送り返すことができ、ユーザーは次に接続するときには、ユーザーIDを再度打ち直す必要がありません。また、クライアントにユーザーごとの好みを溜めることができ、サイトに接続するたびごとに、ユーザーの好みを表示させることができます。

仕様

 HTTPヘッダーの一部としてSet-Cookieヘッダーを含めることによって、クッキーをクライアントに設定することができます。主に、CGIスクリプトによって生成されることになるでしょう。
Set-Cookie HTTP 応答ヘッダーの文法

 これは、CGIスクリプトが、クライアントに設定したい新しいデータを、HTTPヘッダーに加えるのに使うフォーマットです。この設定したデータを今後、サーバ側で読み取ります。
Set-Cookie: NAME=VALUE; expires=DATE;
path=PATH; domain=DOMAIN_NAME; secure

NAME=VALUE
ここには、セミコロン、カンマ、スペースを排除した文字列が入ります。セミコロン、カンマ、スペースが含まれるようなデータを設定する必要がある場合には、URLエンコードのような何かしらのエンコードが推奨されます。ただし、エンコード自体は、まったく定義されているわけではありませんし、要求されるものではありません。(日本語を扱う場合には、URLエンコードをする必要があります。)
Set-Cookieヘッダーには、この属性は必ず必要です。その他の属性は必須ではありません。
expires=DATE
expires属性には、クッキーの有効期限を定義する日付の文字列を設定します。一度、有効期限に達すると、クッキーはクライアントに保存されません。もしくはクライアントからサーバに送信されません。
日付文字列のフォーマットは以下のとおりです。
Wdy, DD-Mon-YYYY HH:MM:SS GMT
これは、RFC 822, RFC 850, RFC 1036, RFC 1123に基づいています。ただし、法定タイムゾーンは、GMTのみです。また日付の各要素間は、ダッシュ(「-(ハイフン)」のこと)で区切られなければいけません。
注意: Netscape Navigator version 1.1 以前ではバグがあります。クッキーに、path属性が明示的に"/"と設定されないと、セッション間で、expires属性が適切に保存されません。
domain=DAMAIN_NAME
クッキーリストから有効なクッキーを探す際、リクエストするURLのホストのドメイン名を使って、クッキーのdomain属性の比較が行われます。もし、ドメインが後方一致した場合には、pathマッチングを行い、クッキーを送信すべきかを判別します。"後方一致"とは、domain属性が、ホストの完全修飾ドメイン名(Fully Qualified Domain Name)の尾部に対して一致したということです。たとえば、"acme.com"のdomain属性は、"anvil.acme.com"というホスト名に一致しますし、"shipping.crate.acme.com"も同様に一致します。
 特定されたドメイン内のホストだけは、一つのドメインに対してクッキーを設定することができます。そして、ドメインは、".com", ".edu", "va.us"のような形式のドメインを除いて、ドメイン名の中に少なくとも2つか3つのピリオドを含んでいなければいけません。以下に示す7つの特別なトップレベルドメインに含まれないドメインのうち、いくつかは2つのピリオドが必要となり、それ以外のドメインは、少なくとも3つ必要です。7つの特別なトップレベルドメインは、次のとおりです。:"COM", "EDU", "NET", "ORG", "GOV", "MIL", "INT"(Cookieの仕様が作成された時代は、7つのドメインだけでしたが、現在は、汎用ドメインも使われるようになり、この限りではありません。)
domainのデフォルト値は、クッキー応答を生成したサーバのホスト名です。
path=PATH
path属性は、クッキーが有効なドメインのURLのサブセットを特定するのに使われます。クッキーがあるdomainにマッチすると、URLのパス名の要素がpath属性と比較されます。そして、一致したなら、クッキーは有効とみなされ、URLリクエストと一緒に送られます。"/foo"というパスは、"/foobar", "/foo/bar.html"に一致します。"/"というパスは、もっとも一般的なパスです。
 もし、pathが特定されていない場合は、クッキーを含んでいるヘッダによって記述されているドキュメントと同じパスとみなされます。
secure
もしクッキーがsecureとマークされていたなら、そのクッキーは、ホストとの通信チャネルが安全なチャネルの場合にのみ送られます。現在においては、secureクッキーは、HTTPS(HTTP over SSL)サーバのみに送られる場合を意味します。
もし、secure指定がない場合には、クッキーは安全とみなされ、安全でないチャネルを通して明文で送られます。

Cookie HTTP Request Headerの文法

ブラウザーは、HTTPサーバからURLを要求する際に、保持しているすべてのクッキーに対してそのURLを検索します。そして、もし一致したなら、すべての一致したクッキーの name/valueペアーを含む1行をHTTPリクエストに含めます。フォーマットは以下のとおりです。
Cookie: NAME1=OPAQUE_STRING1; NAME2=OPAQUE_STRING2 ...

補足

一つのサーバ応答に対して、複数のSet-Cookieヘッダーを発行することができます。
同じパスと名前のインスタンスは、優先する最後のインスタンスにお互い上書きされます。パスが同じで名前が異なるインスタンスは、付加マッピングを追加します。
上位層にパスを設定すると、他の下位層のパスマッピングを上書きしません。もし与えられたクッキー名に対して複数一致しても、パスが異なれば、すべての一致したクッキーが送られます。(例を参照)
expiresヘッダーによって、クライアントは、マッピングのパージ(浄化)がいつ安全になるのかを判別します。しかし、クライアントは、そうすることを要求されません。 もしクッキーの数が限界を超える場合においても、有効期限に達する前にクッキーを削除するかもしれません。
サーバにクッキーを贈る際に、下位層まで指定されたパスのクッキーは、その上位層までしか指定されていないパスのクッキーより先に送られなければいけません。たとえば、"name1=foo"で、パスが"/"のクッキーは、"name1=foo2"でパスが"/bar"のクッキーの後に送られるべきです。
クライアントが一度に溜めておくことができるクッキーの数には限界が存在します。これは、クライアントが受け取り保存するために用意されるべきクッキーの最小数の仕様です。
クッキーの数は、トータルでで300まで。
一つのクッキーにつき4KBまで。name と OPAQUE_STRING は、4KBまでの形式に結合されます。.
サーバもしくはドメインごとに、クッキーの数は20まで。 (特定されたホストやドメインは、別々のエンティティーとして扱われ、各々(結合されたものではない)クッキーの数は20までということに注意してください。)
サーバは、クライアントに、これらの限界を超えることがありうることを期待すべきではありません。300クッキー限度や20クッキー/サーバ限度を超えた場合、クライアントは、もっとも過去に使われたクッキーを削除すべきです。4KBを超えるクッキーに出くわした場合には、クッキーは、フィットするように切り取られるべきです。しかし、名前は、クッキーが4KB以下である限り、手を加えるべきではありません。
もし、CGIスクリプトからクライアントのクッキーを削除したい場合には、同じ名前で、過去の有効期限を持ったクッキーを返すことによって実現できます。パスと名前は、有効なクッキーを満了したクッキーに置き換えるために、正確にマッチしなければいけません。この仕様により、クッキーの発信元でなければ、クッキーを削除することが難しくなります。
proxyサーバがHTTPを受け取る場合、Set-cookie応答ヘッダーは、決して受け取るべきではありません。
もし、proxyサーバがSet-Cookieヘッダーを含んだ応答を受け取った場合には、たとえ、応答が304(Not Modified)か、200(OK)かどうかに関わらず、Set-Cookieヘッダーをクライアントに伝達すべきです。
同様に、もしクライアント要求がCookieヘッダーを含んでいる場合、クライアント要求は、proxyをスルーしてしまわなければいけません。たとえ、条件付のIf-modified-since 要求が作られたとしても。

例

クッキーの利用を説明するために、いくつかのやりとりの例を挙げます。
以下に掲載している例は、原文そのままですが、「有効期限」の西暦が下2桁となっています。しかし、実際には、4桁で定義する必要があります。たとえば、2001年であれば、「01」ではなく、「2001」とします。
例1

クライアントがサーバにドキュメントを要求し、サーバから以下のレスポンスを受け取る。
Set-Cookie: CUSTOMER=WILE_E_COYOTE; path=/; expires=Wednesday, 09-Nov-99 23:12:40 GMT
次に、クライアントがこのサーバ上のパス"/"のURLを要求するとき、クライアントは以下のCookie情報をサーバに送る。
Cookie: CUSTOMER=WILE_E_COYOTE
再度、クライアントがサーバにドキュメントを要求し、サーバから以下のレスポンスを受け取る。
Set-Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001; path=/
次に、クライアントがこのサーバ上のパス"/"のURLを要求するとき、クライアントは以下のCookie情報をサーバに送る。
Cookie: CUSTOMER=WILE_E_COYOTE; PART_NUMBER=ROCKET_LAUNCHER_0001
次にクライアントが、サーバから以下のCookie情報を受け取ったとする。
Set-Cookie: SHIPPING=FEDEX; path=/foo
クライアントがこのサーバ上のパス"/"のURLを要求するとき、クライアントは以下のCookie情報をサーバに送る。
Cookie: CUSTOMER=WILE_E_COYOTE; PART_NUMBER=ROCKET_LAUNCHER_0001
クライアントがこのサーバ上のパス"/foo"のURLを要求するとき、クライアントは以下のCookie情報をサーバに送る。
Cookie: CUSTOMER=WILE_E_COYOTE; PART_NUMBER=ROCKET_LAUNCHER_0001; SHIPPING=FEDEX

例2

例1からのすべてのCookie情報のマッピングは、クリアされたと仮定します。
クライアントがサーバから以下のCookie情報を受け取ります。
Set-Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001; path=/
クライアントがこのサーバ上のパス"/"のURLを要求するとき、クライアントは以下のCookie情報をサーバに送る。
Cookie: PART_NUMBER=ROCKET_LAUNCHER_0001
次に、クライアントがサーバから以下のCookie情報を受け取ったとする。
Set-Cookie: PART_NUMBER=RIDING_ROCKET_0023; path=/ammo
クライアントがこのサーバ上のパス"/ammo"のURLを要求するとき、クライアントは以下のCookie情報をサーバに送る。
Cookie: PART_NUMBER=RIDING_ROCKET_0023; PART_NUMBER=ROCKET_LAUNCHER_0001
注意: "/ammo"マッピングに加えて"/"マッピングの継承によって、"PART_NUMBER"と名づけられた二つの name/value のペアーが存在します。
「htttp_cookie」をウィキ内検索
LINE
シェア
Tweet
0x0b
記事メニュー
  • トップページ

  • JavaScript(ECMAscript)
  • CSS
  • SGML/HTML/XML

テスト用
  • 砂場
見本
  • 使用頻度の高い構文


メモ
_travian
_


ここを編集




延べ - 回
今日 - 回
昨日 - 回



記事メニュー2
2025-10-26 05:58:21 (Sun)

更新履歴

取得中です。



@wikiヘルプメニュー
  • @wiki助け合いコミュニティ
  • wiki(ウィキ)って何?
  • 初心者ガイド
  • ご利用ガイド
  • 良くある質問
  • プラグイン一覧
  • 編集モードの違いについて
  • 不具合や障害を見つけたら
  • 管理・設定マニュアル




ここを編集
最近更新されたページ
  • 4174日前

    トップページ
  • 5141日前

    js_ref
  • 5148日前

    js_about_08
  • 5148日前

    js_about_07
  • 5148日前

    js_about_06
  • 5148日前

    js_about_05
  • 5148日前

    js_about_04
  • 5149日前

    js_about_03
  • 5152日前

    js_about_02
  • 5152日前

    js_about_01
もっと見る
最近更新されたページ
  • 4174日前

    トップページ
  • 5141日前

    js_ref
  • 5148日前

    js_about_08
  • 5148日前

    js_about_07
  • 5148日前

    js_about_06
  • 5148日前

    js_about_05
  • 5148日前

    js_about_04
  • 5149日前

    js_about_03
  • 5152日前

    js_about_02
  • 5152日前

    js_about_01
もっと見る
ウィキ募集バナー
急上昇Wikiランキング

急上昇中のWikiランキングです。今注目を集めている話題をチェックしてみよう!

  1. カリヨン時計@wiki
  2. バトルロイヤルR+α ファンフィクション(二次創作など)総合wiki
  3. シュガードール情報まとめウィキ
  4. モンスター烈伝オレカバトル2@wiki
  5. トリコ総合データベース
  6. cookie clicker 日本語wiki
  7. アサルトリリィ wiki
  8. ロックマンエグゼまとめ@ ウィキ
  9. ファイアーエムブレム用語辞典
  10. モンスター烈伝オレカバトル@wiki
もっと見る
人気Wikiランキング

atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!

  1. アニヲタWiki(仮)
  2. ゲームカタログ@Wiki ~名作からクソゲーまで~
  3. MADTOWNGTAまとめwiki
  4. 初音ミク Wiki
  5. ストグラ まとめ @ウィキ
  6. 検索してはいけない言葉 @ ウィキ
  7. 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  8. Grand Theft Auto V(グランドセフトオート5)GTA5 & GTAオンライン 情報・攻略wiki
  9. モンスター烈伝オレカバトル2@wiki
  10. beatmania IIDX SP攻略 @ wiki
もっと見る
新規Wikiランキング

最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!

  1. MADTOWNGTAまとめwiki
  2. MadTown GTA (Beta) まとめウィキ
  3. ステラソラwiki
  4. まどドラ攻略wiki
  5. 首都圏駅メロwiki
  6. Last Z: Survival Shooter @ ウィキ
  7. ちいぽけ攻略
  8. シュガードール情報まとめウィキ
  9. ソニックレーシング クロスワールド 攻略@ ウィキ
  10. 戦国ダイナスティ攻略Wiki@ウィキ
もっと見る
全体ページランキング

最近アクセスの多かったページランキングです。話題のページを見に行こう!

  1. 真崎杏子 - 遊戯王DSNTナイトメアトラバドール攻略Wiki@わかな
  2. XVI - MADTOWNGTAまとめwiki
  3. 参加者一覧 - MADTOWNGTAまとめwiki
  4. ブラックマジシャンガールのエロ動画 - イナズマイレブンの人気投票で五条さんを一位にするwiki 五条さんおめでとう
  5. 破壊神マハデーヴァ - モンスター烈伝オレカバトル2@wiki
  6. 魔獣トゲイラ - バトルロイヤルR+α ファンフィクション(二次創作など)総合wiki
  7. angler - MADTOWNGTAまとめwiki
  8. スターミー - アニヲタWiki(仮)
  9. Pokémon LEGENDS Z-A - アニヲタWiki(仮)
  10. 白狐 - MADTOWNGTAまとめwiki
もっと見る

  • このWikiのTOPへ
  • 全ページ一覧
  • アットウィキTOP
  • 利用規約
  • プライバシーポリシー

2019 AtWiki, Inc.