小麦粉にバターを練って焼いたお菓子。
有名なものに、ステラおばさんの~、がある。
とか、お約束なことは書きません(^^)
あ、いや、もう書いてしまいましたね。
すみません。
まずは、HTTP通信とは? を読んでください。
クッキーは、HTTPのヘッダ部に記述できる情報の1つです。
【クッキーの使用目的】
何に使用されるかというと、クライアント(IEなど)とWEBサーバとの間の情報のやり取りです。
情報は名称と値を持っていて、例えば、userにnanaという値をセットしてIEとWEBサーバの間で読むことができます。
そうすると、POSTやGETでも情報のやり取りはできるし、何が違うの?って思いますよね。
POST、GETの情報(パラメタ)と比較しながら見ていきましょう。
【パラメタとクッキーの違い】
①データを書くのは誰?
パラメタの場合、クライアント側が書きます。つまり、IEが、テキストボックスなどに入れられた値から
パラメタを作成しWEBサーバに送りますよね。
クッキーは、基本的には、WEBサーバ側が書き、IE側はそれを読み、必要なときにWEBサーバ側に送ります。
②データが生きている期間
パラメタの場合、IEからWEBサーバにデータを送る間(1回の画面遷移の間)しかデータが生きていません。
画面遷移を複数またいでも値を生かしておくためには、HTMLの例えばhidden属性のinputタグに
毎回書き込むしかありません。
クッキーの場合、1度データが発行されればHTMLにわざわざ書かなくてもクライアント側で
値が保存されます。
また、Expiresという属性があり、データの生存期間(日時)を指定できます。
指定した日時までWEBサーバにデータを送ります。
Expiresを指定しないと、IEが閉じられるまでが生きている期間となります。
Expiresを指定しないクッキーをセッションクッキーと言います。
主な違いは上記の2つかと思います。
HTMLに毎回値を記述して持ちまわるより便利ですよね?
【プログラムでの書き方】
WEBサーバからIEにクッキーを送りたい(セットしたい)場合、ヘッダに以下のようなテキストを
ヘッダ部に書き込みます。
Set-Cookie: SESSIONID=XXXXX; Path=/
「Set-Cookie」が、「クッキーを設定しなさい」、というIEへの命令です。
そのあとの「SESSIONID」は、クッキーデータのデータ名、=のあとが値です。
「Path」は、「指定のURLにアクセスするときにこのクッキーを送りなさい」、というIEへの命令です。
「/」は、今のドキュメントルートを表します。
つまり「Path=/」は、
URLが「http://ameblo.jp/nana-2007-july/entry-10104386742.html」の場合、
「http:ameblo.jp/」が頭につくURLのときは、SESSIONID=XXXXXというクッキーデータを
WEBサーバに送ることをIEに約束させます。
【プログラムでの受け取り方】
IEから送られてくるクッキーは、以下のテキストの形式です。
__utma=XXX; __utmz=XX1.1; SESSIONID=XXXX;
データ名=値; データ名=値;・・・
という形式ですので、これを分解していけば値が取れます!
<漏補 >
漏:
クッキーは値を持ちまわりたい場合、とっても便利です。
しかし、かといって個人情報や認証情報を入れてはいけません。
まず、HTTPのヘッダ部に書かれているので、通信の途中で盗聴器が仕掛けられていた場合、
内容を閲覧できてしまいます。
HTTPSにするとヘッダ部もSSLで暗号化されるはずですが、
クライアントではJavaScriptでクッキーの情報を閲覧できてしまうのです。
補:
クッキーに個人情報などを載せてはいけません。
では、1度接続した人の情報を持ちまわりたい場合どうするのでしょうか。
ユーザごとにセッションIDを発行して、WEBサーバ側でセッションIDごとに情報を保存するのです。
クッキーではセッションIDのみやり取りすれば、盗聴されても意味の無いIDを見られるだけです。
わざわざ個人情報などを閲覧される回数を増やして、危険を増やす必要はないのです。
他にも注意点はあると思いますが、Googleなどで調べればいろいろ分かると思います!
注意深く使用して楽しいWEBプログラミングをしましょう(^^)