HTTPはステートレス←つまり、どういうこと?

目次

HTTPについて考えてみる

基本的にHTTPはステートレス。つまり、記憶力が超悪い、おバカさん。

簡単に言うと、1回ごとに忘れる。つまり、毎回教えてあげないといけないと言うこと。

なので、ログインしてる状態と言うのはログインしている状態でページ移動や何かのアクション(買い物かごへの追加とか)したりしているわけではなく、毎回ページ移動やアクションごとに、今はこいつだよ!と教えているようなイメージ。この時に使われるのが、セッションだったり、クッキーだったりする。

例で考えてみる

例えば、今、鈴木というアカウントでログインしていたとする。

その時、ページ移動したら、「あれ、今誰だっけ?」となるので、「今、鈴木と言うアカウントですよ」と教えている。

他にも例えば、買い物かごにりんごを追加しようとすると、「あれ、今誰だっけ?」となるので、「今、鈴木と言うアカウント」がりんごを追加だよ、と教えてる。

その後に、今度はみかんを追加しようとすると、また「あれ、誰だっけ?」となるので、「今、鈴木と言うアカウント」にみかんを追加だよ 、と教えている。 以下、繰り返し。

別の言い方をすると?

これを別の言い方にすると、まずログインする。その時にセッションIDに鈴木のidをいれる。

買い物かごにりんごを追加しようと、クッキーに保存されているセッションIDも一緒に送信される。

送られてきたセッションIDから、「今のユーザは鈴木だ!」と判断し、鈴木のデータにりんごを追加を保存する。

今度はみかんを追加しようとすると、またクッキーに保存されているセッションIDも一緒に送信される。

送られてきたセッションIDから、「今のユーザは鈴木だ!」と判断し、鈴木のデータにみかんを追加を保存する。以下、繰り返し。

つまり、毎回セッションIDを送って、そのIDを元にユーザを毎回特定しているということ。

具体例で考える

もっとわかりやすい例で言うと、ログインしているかでヘッダーを切り替える時とか。

あれはログインしている状態によって、切り替えていると言うよりかは、毎回毎回表示される度に「あれ、今ログインしているっけ?」みたいな状態で、毎回「今、してるよ!だから、している場合の表示はこっちだよ!」みたいなことをしている。