Webアプリの開発に従事したことがある方でしたら、Cookieなんてもうバッチリ理解されていると思います。ですので、この記事ではこれからWebアプリ(特にASP.NET)を開発していこうとされている方向きに執筆します。
目次
Cookieって何?
スマホとかでサイトを閲覧していると、「Cookie(クッキー)を有効にしてください」なんて警告文を見たことが一度はあるはずです。ITリテラシーの低い方でしたら、あまり気にせず、はいはいと有効化してしまうでしょうが、ここは少しでもITリテラシーを高めて、Cookieについて改めて理解を深めておきましょう。
Cookieを一言で言うと、履歴を残す仕組みとなります。Webページを閲覧した履歴やユーザーの情報(IDやパスワード)などを一時保存します。皆さんもよくご存じだと思いますが、会員制のサイトなどで一度ログインすると、次回から再度IDやパスワードを入力しなくても、前回入力した情報が残っていて簡単に再閲覧できるようになっているかと思います。それがCookieそのものですね。
Cookieの名前と値と属性について
基本的にはCookieは名前と値と属性の3点セットでできています。Webアプリケーションを開発するならば、最低限Cookieの仕様は理解しておきましょうね。
Google Chromeを活用してのCookie確認事例です。
Cookieデータの例
WebブラウザによってはCookieデータを表示したり編集したりできる。これはGoogle Chromeの例。設定画面で[詳細設定を表示]を実行し、[プライバシー]グループにある[コンテンツの設定]ボタンをクリック後、[すべてのCookieとサイトデータ]をクリックするとこの場面が表示される。Internet Explorerの場合は、[ファイル]メニューの[インポートとエクスポート]でCookieデータを書き出すと内容を確認できる。
(1)Cookieのデータはドメインごとに管理されている。
(2)このドメインに対しては、全部で13個のCookieが保存されている。このように、1つのドメインで複数のCookieが使われているのは普通である。
(3)特定のCookieの値を見るには、いずれかのボタンをクリックする。
(4)Cookieの名前。
(5)Cookieの値。
(6)Cookieの属性。ドメイン/パスの有効範囲やセキュリティなどの属性情報。
(7)Cookieの受信/作成時間と有効期限。
(8)これをクリックするとCookieを削除できる。
以下の一覧表は、Cookieの属性をまとめたものです。Web開発者はこれらの属性を考慮してコーディングしているのですね。
属性 | 意味 |
---|---|
Domain | Cookieが有効なドメイン範囲を指定します。例えば、「Domain = example.com」と指定すると、そのサブドメインへアクセスする場合にも送信されます。指定なしの場合は、現在のホストでのみ有効となります。 |
Path | Cookieが有効なパス範囲を指定します。例えば、「Path = /」と指定すると、取得したCookieはサイト全体で有効となります。指定なしの場合は、現在のURLでのみ有効となります。 |
Expires | Cookieの有効期限です。指定なしの場合は、ブラウザの終了まで有効です。 |
Secure | Trueの場合、SSLの場合のみCookieを送信します。 |
HttpOnly | Trueの場合、JavaScriptからアクセスできません。 |
ASP.NETを活用してCookieをコーディングしよう
上記で説明したCookieの属性を考慮して、ASP.NETを活用してコーディングしました。もう何番煎じかわかりませんが、コーディング例を記載しましたので、ご参考にどうぞ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
using System; namespace SampleCookie { public partial class Sample : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // Cookieの取得 if (Request.Cookies["userid"] != null) { // IIS上でUTF-8として扱われるため送受信時との文字コードの違いにより文字化け防止策 txtCookieName.Text = Server.UrlEncode(Request.Cookies["userid"].Value); } } protected void btnCookie_Click(object sender, EventArgs e) { // Cookieの設定 ドメイン指定なし Response.Cookies["userid"].Value = Server.UrlEncode("test001"); Response.Cookies["userid"].Name = Server.UrlEncode("SampleCookie"); Response.Cookies["userid"].Expires = DateTime.Now.AddDays(30); // 有効期限 Response.Cookies["userid"].Path = Request.Path; Response.Cookies["userid"].Secure = true; Response.Cookies["userid"].HttpOnly = false; } } } |
サードパーティーCookieって何?
まずはファーストパーティCookieから。これはアクセスしたドメインから発行されたCookieのことです。当サイト「https://www.engineer-walk.com/」にアクセスした時に取得した「domain = engineer-walk.com」という属性を持つCookieはファーストパーティCookieとなります。
それに対して、アクセスしたドメインとは別のドメインから発行されたCookieのことをサードパーティCookieと呼びます。広告配信Webサーバーが代表的な存在ですね。「https://www.engineer-walk.com/」内に広告が表示されているとします。この広告を配信しているWebサーバーが発行したCookieが、サードパーティCookieに該当します。
このサードパーティCookieは、各々のWebブラウザの設定で禁止に設定することも可能です。また、GoogleはこのサードパーティCookieの提供を将来的(2022年頃)に終了すると発表しています。
まとめ
Cookieについてはいかがでしたでしょうか。
サードパーティCookieは規制されますが、ファーストパーティCookieはまだまだ利用できますので、上手にCookieを使いこなして、ユーザー管理していきましょうね。
最後までお読みいただきありがとうございました。