どっちがどっちだったけ?ってよくなるので
正しく言語化できるように調べてまとめました
いつもみているTwitterのホーム画面
ブラウザで、TwitterのURLを叩く
すると、当たり前だが自分のタイムラインが見ることができる
それは、なぜかというと
Cookieを使ってセッション管理
をしているから
なんでセッション管理するのか?
それは、世界中からタイムラインを見して〜というリクエストが届くから!
そして、HTTP通信はステートレス
な通信であるため!
なので、擬似的にCookieを使って、セッション管理をすることで
どのアカウントでログインしているかなどの状態をサーバーに教えることができる
ステートレス通信とは
ステートとは状態という意味
ステートレス通信は、状態を持たない状態
状態を持たないってことは、
リクエストのたび毎回はじめまして状態ってこと
似たような言葉で、ステートフル
もある
ステートフルとステートレスの違いは
クライアントとサーバー間のやりとりを維持するかしないかの違い
セッションとは
ユーザーの情報をサーバーに一時的に格納する仕組みのこと
セッションって言葉には一定期間の活動っていう意味がある
一回きりのアクセスではなくて、色々な一連の流れがセッション
WEBサーバーで保持するキーと値のこと
セッションはWebブラウザを閉じるまで保存する
リンクなどを張ってページを移動しても内容を保持することができる
どうやって流れを保つのか
まず、Twitterのホーム画面をみるには
ログインして、パスワードを入力する
すると、
あなたの識別番号は〜ですよ
という、指示をブラウザにしてくれる
そうすると、ブラウザはその情報を保存してくれる
その識別番号のことをセッションID(無作為な英数字)
という
セッションIDは、cookie
に保存される
cookieとは
Webブラウザに保存される情報のこと
HTTPにおけるWebサーバとWebブラウザ間で状態を管理するプロトコル
CookieはWEBサーバーが発行し、ブラウザが保持するキーと値
ブラウザは同じサイトにアクセスする際にはそのCookieをWEBサーバーに送信します。ブラウザ側が個人の識別番号を覚えていては意味をなさないので
サーバー側も同様に覚えておく
サーバー側が覚えている情報は、セッション情報
という
WEBサーバーはブラウザからのリクエスト毎にその値を参照することができる
Webアプリでは、
リクエストヘッダに入っているCookieを調べることで、
アクセスしてきた相手がどのような相手なのかを知ることができ、
ユーザー識別やセッション管理を実現することが可能となる
参考記事
https://qiita.com/Yametaro/items/9b65a21940e001554719
https://qiita.com/hththt/items/07136ad74127999df271#cookie%E5%9F%BA%E6%9C%AC
https://amg-solution.jp/blog/7061
https://ips.nekotype.com/2441/