クッキーでちょっと困った件
先日TwitterAPIとOAuth認証の調査目的で作ってみたツイッターのアプリですけど、いちいちブラウザを立ち上げて認証を通すのがアレなのでアクセストークンとアクセストークンシークレットをクッキーに混ぜてクライアント側に保存しようとしたら、いろいろ本題と外れたところでつまずいて、まー困ったというか、勉強になったというか・・・。
まず、クッキーのパスの問題。IE9の場合、ここで書いたような(実ファイルのスクリプト以降にも架空のパス要素がつながるような)URLをsetcookieの第四引数(path - クッキーを有効としたいパス)に与えたら、受け取ってはくれるけど、返してくれないようだった。
↓IE9は受け取っても返してくれない?…(動いているスクリプトはindex.php)
//クッキーをあげる
setcookie(
"cookiename",
"$acc_tok,$acc_tok_secret",
time() + 60*60*24*14,
'/app/index.php/module/action/',
$_SERVER["SERVER_NAME"])
当初、なにが問題なのかわからなかったのですが、ためしに'/'を与えてみたら、すんなりOK。Ffirefoxでは問題なかったんだけど、どっちが正しい動きなんだろう。
もういっちょ、上の問題解決過程でわかったクッキーの管理上の問題(大きな問題ではないけれど)。Firefoxでしか確認していないのだけど、同じドメインの同じ名前のクッキーでも、上で書いた有効パス
が違っていると、別物として保存されているようだった。先に詳細な(下位の)パスを指定して食わせておいて、あとからパスを(より上位の)'/'に変えてサーバーからのsetcookieによって削除しても、最初のクッキーは削除されず、毎回古いクッキーが送られてきていた。結局ブラウザ側から個別にクッキーを削除して解決したけど、同じドメインで同じ名前のクッキーなら上書きしてくれたらいいのにね。これは仕様なのだろうか。
サーバー側のプログラムでもクロスブラウザに関して気を使わなくてはならないのですな。
« S・N・S | トップページ | HTML要素のイベントハンドラを自動登録 »
「プログラミング」カテゴリの記事
- 自分で書いたコードが大好き(2020.09.20)
- NPMのヨロコビ(2020.05.14)
- VanilaJS は必須科目(2019.02.25)
- MZ-700フルJavaScriptエミュレータ v1.0.6 をリリース(2019.01.26)
- 戦々恐々GitHub vs BitBucket(2019.01.08)
コメント