HTTPはステートレス←つまり、どういうこと?
目次
HTTPについて考えてみる
基本的にHTTPはステートレス。つまり、記憶力が超悪い、おバカさん。
簡単に言うと、1回ごとに忘れる。つまり、毎回教えてあげないといけないと言うこと。
なので、ログインしてる状態と言うのはログインしている状態でページ移動や何かのアクション(買い物かごへの追加とか)したりしているわけではなく、毎回ページ移動やアクションごとに、今はこいつだよ!と教えているようなイメージ。この時に使われるのが、セッションだったり、クッキーだったりする。
例で考えてみる
例えば、今、鈴木というアカウントでログインしていたとする。
その時、ページ移動したら、「あれ、今誰だっけ?」となるので、「今、鈴木と言うアカウントですよ」と教えている。
他にも例えば、買い物かごにりんごを追加しようとすると、「あれ、今誰だっけ?」となるので、「今、鈴木と言うアカウント」がりんごを追加だよ、と教えてる。
その後に、今度はみかんを追加しようとすると、また「あれ、誰だっけ?」となるので、「今、鈴木と言うアカウント」にみかんを追加だよ 、と教えている。 以下、繰り返し。
別の言い方をすると?
これを別の言い方にすると、まずログインする。その時にセッションIDに鈴木のidをいれる。
買い物かごにりんごを追加しようと、クッキーに保存されているセッションIDも一緒に送信される。
送られてきたセッションIDから、「今のユーザは鈴木だ!」と判断し、鈴木のデータにりんごを追加を保存する。
今度はみかんを追加しようとすると、またクッキーに保存されているセッションIDも一緒に送信される。
送られてきたセッションIDから、「今のユーザは鈴木だ!」と判断し、鈴木のデータにみかんを追加を保存する。以下、繰り返し。
つまり、毎回セッションIDを送って、そのIDを元にユーザを毎回特定しているということ。
具体例で考える
もっとわかりやすい例で言うと、ログインしているかでヘッダーを切り替える時とか。
あれはログインしている状態によって、切り替えていると言うよりかは、毎回毎回表示される度に「あれ、今ログインしているっけ?」みたいな状態で、毎回「今、してるよ!だから、している場合の表示はこっちだよ!」みたいなことをしている。