0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Cookieについて調べてみた

Posted at

はじめに

只今、Web関連について学習中です。
CookieについてはWeb関連の知識に密接に関わっているのでCookieについてどういうものかを調べた内容をアウトプットします。

Cookieとは?

HTTPで状態を記憶するために使われる仕組みがCookieです。
サーバからクライアントのブラウザに対して送付されるデータ(Cookie)を使って、サーバーとブラウザ間でデータを交換することができます。

活用例としては、一度ログインをおこなったサイトに対して、一度そのページを離れてしまった場合でも、再度サイトに戻った時に再度ログイン作業をおこなわずともログイン状態の画面が再度表示される、といった仕組みはCookieによるものです。

実データなどをCookieに入れておくと不正アクセスされた際に情報が漏洩してしまうので
もセッションIDをCookieに含ませてサーバー側でそのセッションIDを元にセッションデータを取り出して状態を維持する方法もあります。

ちなみに、状態が維持されることを「ステートフル」、維持されないことを「ステートレス」と言います。

image.png

上記を実現するためにはSet-CookieヘッダーとCookieヘッダーを使用します。

Set-Cookie ヘッダーとCookie ヘッダー

HTTP の Set-Cookie レスポンスヘッダーは、サーバーがユーザーエージェントへ Cookie を送信するために使用します。単純な Cookie は次のように設定されます。

Set-Cookie: <cookie-name>=<cookie-value>

サーバーからクライアントへのcookieの組み合わせを保存するように指示するには以下のようになります。

HTTP/2.0 200 OK
Content-Type: text/html
Set-Cookie: SESSIONID=xxxxxx…

その後のサーバーへのリクエストは、ブラウザーに以前格納されたすべてのCookieを、Cookieヘッダーを使用してサーバーへ送信します。

GET /sample_page.html HTTP/2.0
Host: www.example.com
Cookie: SESSIONID=xxxxxx…

Cookie スコープの定義

DomainまたはPath属性にてCookieの送信先のホストやURLなどを定義できます。

Domain属性

Domain 属性はCookieの送信先ホストを指定することができます。
もし、Domain を指定しなかった場合はCookieを設定したホストを Domain として指定します。
ですが、サブドメインなどは除外されてしまいます。
例えば、example.org がドメインだとすると developer.example.org などのサブドメインは含まれません。
なので、サブドメイン間でユーザー情報などをやり取りしたい場合には役立ちます。

設定方法

Domain=example.org 

上記のように設定すると、今度はdeveloper.example.orgを含むことができます。

Path属性

Path属性は、URLの中にこれは必ず含んで欲しいURLのパスを定義することができます。
要はドメイン名/Path ← / の後からのパスを定義できます。
例えば、Path=/foo と設定したとします。

以下のリクエストパスでCookieが使用できます。
・/foo :white_check_mark:
・/foo/bar :white_check_mark:

ですが、以下のリクエストパスでは使用できません。
・/foobar :x:

Cookieの持続時間の定義

Cookieには2通りの方法で持続時間を定義できます。

セッションCookie

セッションCookieは、ブラウザが閉じられると自動的に削除されます。
ブラウザはいつ「現在のセッション」が終わったと見なすかを定義し、ブラウザによっては再起動にセッションの復元を使用することができます。そのため、結果的にセッションCookieが無期限に持続することがあります。

Expires属性

Expires属性は、Cookieが有効期限を指定するために使用されます。
具体的な日時と時刻を指定し、その日付と時刻を過ぎるとCookieは自動的に削除されます。

Set-Cookie: SESSIONID=xxxxxx…; Expires=Wed, 08 Jul 2023 12:00:00 GMT;

おわりに

Cookieについてざっくりとですが記事としてアウトプットしました。
普段何となくな理解だったので設定できる属性やその役割など少し明確になったかと思います。

参照資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?