赤字:JavaScriptの部分/青字:自由に変更可能な部分/緑字:変更可能だがJavaScriptの動作に重要な部分(そのままの方が良い)
cookie(クッキー)はネットスケープ社がブラウザを操作するたびに同じ内容のデータを入力しなくても良いようにと考え出したデータの記録システムです。
例えば、掲示板に名前などを入力して書込を行うと、次に同じページを訪問したときにあなたの名前が自動的に表示されるという仕組みができます。
cookieはブラウザの機能として提供され、ユーザーのパソコンにテキストファイルで保存されています。そのため、同じパソコンの中にある別のブラウザや別のパソコンからはそれを参照することはできません。
cookieがないころは、サーバーに個人情報を保存して置き、それをフォームからIDとパスワードを使って読み出す方法でしかユーザーの識別をすることができませんでした。そのため、ページを変わった際にユーザーを追いかけるには複雑な処理が必要でした。cookieを利用すれば、いつでもその内容を取り出すことでユーザーを追いかけることができるため、必要なときに自動的に認証処理をさせることができます。
安全を考慮して、別のドメインからはcookieを取り出せないようになっています。また、同じドメイン内でもパスを指定することで読み取りを許可するディレクトリを設定することができます。
1つのcookieには下記の要素が含まれています。
| 要素 | 内容 | 記号 |
|---|---|---|
| 名前 | 複数のcookieを使い分けるために必要 | 任意 |
| 有効期限 | cookieデータを保存する日付を指定できる。未指定の場合、ブラウザの終了時に消える | expires |
| 参照ドメイン | cookieを発行(保存)したサイト以外から参照(読込)できないようにするため。 未設定の場合、自動的にドメイン名またはIPアドレスが取得される。 | domain |
| 有効範囲 | 1つのドメインの中で読み込み可能なディレクトリを指定できる 未指定の場合、ブラウザによって全体(ルートディレクトリ)を有効範囲とするもの(IE)と自動でディレクトリ名を取得して設定するもの(NC)がある。 | path |
名前以外の要素はすべて省略可能です。名前を省略してしまうと、2つ以上のcookieを使い分けることができなくなります。
有効期限を指定しなければcookieはブラウザの終了時に消えてしまいます。ページからページへデータを運ぶだけの役割ならそれでも良いのですが、また後日利用するためには必ず有効期限の設定が必要となります。
参照ドメインは省略してかまいません。自動的にドメイン名が設定されます。1つのドメイン内で複数のサーバーがある場合に、サブドメインを省いたドメイン名のみを指定(例えばhomepage.net)すれば同じドメイン内の各サーバーでcookieが有効になります。サブドメインを含む(www.homepage.net)と他のサブドメイン(例えばcgi.homepage.net)ではcookieが利用できません。
有効範囲は、できれば指定した方が良いでしょう。ブラウザによって省略時の内容が異なるという問題と、プロバイダでの問題点があります。
プロバイダの場合、URLが「www.homepage.net/~user」のようになっていることがあります。もし、有効範囲をルート(全体)にしていると「www.homepage.net」内の全てのサイトでcookieを参照することができることになるのです。
もしあなたのURLが先の例の場合、有効範囲に「/~user」とすれば、その中だけでcookieを参照することができるようになります。
基本が理解できれば、cookieの楽しさも色々と考える余裕が出てくることでしょう。
早速、簡単なcookieの利用方法を紹介していきますので、色々と試してみてください。
この「cookieを使ってみる」の章では、読み込み(更新)を何度も行って動作の確認をしていただきますので、各項目毎に新しいウインドウを開くようにしています。
【cookieが消えるとき】
cookieを呼び出した後、保存を行わなければcookieはいずれ期限切れとなって消えてしまいます。
cookieの有効期限は保存のときに設定されるので、呼び出しを何度行っても有効期限は更新されません。
掲示板のように書き込みのための補助機能であれば、書き込みしなければcookieを利用する必要もないため、書き込み時にcookieを保存します。
カウンターのように表示と自動更新が目的の場合は、表示や更新の後、直ぐに保存を行うようにします。
また、cookieには総個数の制限とファイル容量(保存しているテキストファイル全体のサイズ)の制限があり、それを越える場合には古いものから自動的に削除されて行きます。
JavaScriptから強制的にcookieを消したい場合は、期限を設定せずに保存します。これでブラウザ終了時に消えてなくなります。
【CGIとの関係】
cookieはCGIを使った掲示板などのサービスで必ず活用されています。何度も訪れる訪問者を識別することができ、そのときの利便性を向上させる用途で使用されています。
ただし、CGIの場合はページを読み込んだときにしかcookieを読み書きすることはできません。JavaScriptを使うことでフォームのボタン操作にも連動させることができますし、手軽にHTMLにcookieの便利な機能を組み込むことができます。
【自己管理の要点】
cookieにデータを保存しているからといって個人データが保護されている訳ではありません。
パソコンを他人に貸した場合、アカウントを分けていないと同じcookieが読み出されます。ゲストアカウントを使ったり、家族であれば別アカウントを設定して、ブラウザの個人情報を共有しないことが安全な運用に必要です。
また、パソコンを処分する際にも中に残ったcookieを削除しないと個人情報が沢山残っていて危険です。ブラウザの削除機能を使って安全に対処してください。
各ブラウザにはcookieを管理する機能が備わっていますので、その機能を確認しておきましょう。
検索サイトや広告サイトでは、閲覧者を追跡するためにcookieが利用されています。cookieを使用停止にしたり、削除することで追跡を断つことができます。
IEやNCでは、最初からcookieの受け入れが自動的に行われています。cookieを保存する際に、警告を表示したり、受け入れをさせないという設定も可能です。
また、保存しているcookieを表示し、削除する機能もありますので見覚えのないcookieは消しても良いでしょう。
便利なcookieですが、そこにはあなたの大切なデータがまとまって入っているということを忘れないでください。