小麦粉にバターを練って焼いたお菓子。

有名なものに、ステラおばさんの~、がある。


とか、お約束なことは書きません(^^)

あ、いや、もう書いてしまいましたね。

すみません。


まずは、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プログラミングをしましょう(^^)