2014年には役に立たないセッションの昔話 #hachiojipm

Preview:

DESCRIPTION

2014/6/21に行われた Hachioji.pm#41 で発表したLTのスライドです。

Citation preview

2014年には役に立たない セッションの昔話

OGATA Tetsuji (@xtetsuji) 2014/06/21 Hachioji.pm#41

自己紹介

• 尾形 鉄次 (OGATA Tetsuji)

• Twitter: @xtetsuji

• Blog: http://post.tetsuji.jp/

先日 「シニアエンジニアによるガラケー大戦回顧録」

というイベントをやりました

ひっそりとやろうと思ったら なんかバズった

ガラケー懐かし話満載

ガラケー時代はセッションも 苦労した

ガラケー時代のセッション

• Cookie使えない!

• なのでURLにセッションを入れる

• その引き回し方に各社各人の秘伝のタレがあった

• セキュリティに詳しい人は「あれリファラから漏れるんじゃないの?」っていうけど、そこは低機能な柔軟性のあるガラケー、リファラは送りません

ガラケー時代のセッション

• でもVodafone(Softbank)の「P型端末」という2G機種はCookieが使えないのにリファラを送るという最低最悪な端末でした(既にこの世から消え去りました)

引き回し方法• 既存の枠組みに任せる。PHPだとCookieが使えない場合にPHPSESSIDがクエリ引数に自動でついてまわる機能があってガラケー時代に大ブーム

• 自分で作る場合にはプログラム側で「どこか」に入れたセッションをURLからURLへ渡すようにする(a要素やform要素を全て書き換える)

• 静的ページを挟む場合に面倒

僕は考えた

• フォルダのように見せかけたセッションだったら、静的ページをはさんでも相対リンク遷移だと大丈夫?

• e.g. /s=ZYX321abc987/path/to/foo.html

今以上に知識がない当時

• Apache一択時代

• これ、mod_rewriteを使えば環境変数に入れられるんじゃないか?

mod_rewrite例• RewriteRule ^/s=([^/]*)(/.*)$ $2 [QSA, E=session:$1]!

• だいぶ忘れちゃったけど、雰囲気こんな感じ

• あとはmod_perlのレスポンスハンドラとか、mod_actionなどで、静的ファイルを処理するふりをして後ろで処理するPHPやPerl CGIを置いておけばよい

• 自力対処で困るのは206 Partial Contentの場合

206 Partial Content

• HTTPの部分リクエスト。ダウンロードレジューム機能やPDFのページ飛ばしとか、色々裏で使われている

• ガラケー時代はその性能の貧弱さゆえ、着メロのダウンロードとかにこれを必須にしていた(RFCでは努力項目)

• Apacheだと標準の出力ハンドラ(default-handler)が処理してくれるけど、PHPでfopenとかするプログラムを裏に据えてもこれを認識しないのでツライ

左側セッション

• この「パスの左側にセッション文字列をディレクトリのように見せかけて後で処理」方法を自分では「左側セッション」って社内で呼んでいた

• mod_perl覚えたて時代にうまくいったプロジェクトもあった

• ただ、ガラケー衰退とともに忘れ去られていきました

Cookie最高!

おしまい

Recommended