localhostのcookieをブラウザの機能を使わずにクリアしたくてRFC 6265を勉強したけど無理だった

課題

localhost で開発するので localhost の cookie が(少なくとも開発者ツール上では)たくさんあって邪魔くさい。なんかサクッと削除する方法はないか? できれば手作業でなく自動でなんとかしたい。

結論

ダメでした。

  • サーバサイドのコードではブラウザから送信されてこない cookie については感知する方法がない
  • expired な cookie はサーバには送られてこない(少なくとも最近のブラウザでは)
  • ブラウザ上の JavaScript でも expired な cookie にはタッチできなかった(とりあえず Firefox 48 では)

ついでにRFC 6265をちょっと勉強した

RFC 6265 は今回まったく主目的ではないんだけど。

Cookie には伝統的な問題がいくつもあり、RFC 6265 により互換性とこれらの問題の解決を図る。以下、雑なメモ。

  • Cookie は request ヘッダに1つだけ。複数送信してはならない。
  • expired cookie はいつでも削除しなければならない(タイミングは決まっていない。容量や数の制限を超える場合は優先的に削除される)
  • Cookie は cookie-string で定義される文字列 key=value; key=value の並び(デリミタは"; ")
  • 妥当な UTF-8 であるとは限らない。

expire については日本語では読みにくく、英語の方が分かりやすい。

A cookie is "expired" if the cookie has an expiry date in the past.

The user agent MUST evict all expired cookies from the cookie store if, at any time, an expired cookie exists in the cookie store.

At any time, the user agent MAY "remove excess cookies" from the cookie store if the number of cookies sharing a domain field exceeds some implementation-defined upper bound (such as 50 cookies).

この MUST evict と MAY remove の違い。

感想

RFC 6265 互換でオブジェクト指向で書けるライブラリを利用すると捗りそう。

js-cookie/js-cookie: A simple, lightweight JavaScript API for handling browser cookies

とか。

expire 周りは実際にはどうも expired cookie はただちに削除はされないが Cookie ヘッダには乗らない、という動作になるようだ。サーバ的には送られてこない Cookie は存在しないも同じなのでそれでよいのか。JavaScript 的にも expired な cookie は取得できないようだ。(Firefox 48で確認)

ただし、人間が目視で開発者ツールで確認を行う際には実際には削除はされていないので、目視的にはノイズになる。これがやっかい。結局は Cookie の確認方法をマスターするのと同時に削除の方法もちゃんと身につけましょう、ということらしい。

ちょっとつらい結論になってしまったが仕方ないかー。

Growl を入れてみたがまだイマイチ

OSX で Notifier と言えば Growl らしいのでこれを入れてみる。

Welcome to Growl!

どうやらこれも 10.3 は放置プレイに入りつつあるようだけどとりあえず入れてみる…と思ったら入れ方分かんねぇ。

Growl.prefPane

をダブルクリックって。なんかもう少し分かりやすくできないのか。

そして何にも使えるアプリがねぇ。あーえーと。なんか後から足すのか。

Extras/GrowlMail/GrowlMail.pkg

をインストール。

Extras/growlnotify/install.sh

を Terminal から実行(ぶ) いやまぁ、できますけど、それってどうだ。

続いて Thunderbird に Growl New Message Notification :: Thunderbird Add-ons をインストール。う。これ、新着メッセージだけだよな。つか Growl Notifications :: Thunderbird Add-ons も同じだな。てことはあれか。

Reminderfox から WebDAV で iCal データを定期的に吐き出して、それを iCal で定期的に読み込んで、iCal そのものか、あるいは iCal + Growl でやった方がよさげだな。

どう見てもめんどうくさいです。あり(ry

……。やっぱ iCal かぁ?

PC絶不調

PowerBook のディスク周りがどうも不調な様子 。恐ろしく遅くなって使いものにならなくなる。とりあえずお遊び用に用意してあった外付けの HDD に退避開始。中古だし、ついでに HDD 交換のうえクリーンインストールの刑に処することにする。このバックアップは果てしなく長そうだなぁ。…つか、FAT32 に HFS+ のバックアップが取れるわけねーな。(使えない文字とか Mac 用のアプリが地雷踏んでて。)んー。ということは FAT32 のディスクの内容を別な場所に移して(移動先は複数あるから合わせればなんとかなるだろう)HFS+ でフォーマットし直しちゃうのが楽かな?普段全然クライアントマシンのデータの保全ができてないの丸分かりだな、こりゃ。

細かいデータ以外は Web ベースで作業できる状態になっているものが多いので、眠っていた ThinkPad を引っ張りだし…。あれ、AC はどこいった。あー無線のカードを AirMac に登録してない。1あー。めんどくせぇ。

しかしちょっと使ってみたけど ThinkPad 快適だなぁ。なんだこの使いやすさ、レスポンスの良さ。見直したぞ Pen!!! 600 + Win2k.

[10/3 追記] やっぱディスクがダメっぽい。

退避用に 3.5" 160GB、新環境用に 2.5" 60GB のディスクを買ってくる。合わせても2万なんだからずいぶん安くなったもんだ。ついでに Tiger に上げようかと思ったけど、なぜかパッケージが見つからないので無視。バックアップ…。あれ。なんか新しいディスクの容量がでかい。あーなんかちょっと高いなと思ったら 250GB 買ってきちゃったよ。まーいいか。エラーはアプリのコピー時に起きた。データのときには何も言われないしスローダウンもしない。これはとてもラッキーな状態か? 確認、確認。バラシが面倒になった2なので試しに同じディスクのままクリーンインストールして放置してみる。朝になっても終わってないorz なんか前にディスクがおかしくなったとき(どれだったか覚えてない)もこんな感じだったような? 最近のディスクはぶっ飛ぶ前にきれいにスローダウンしてくれるのか? 単に当たり引いてるだけか?

  1. つーか無線のカードどこいった。 

  2. ThinkPad 以外はマニュアルもないしどれも面倒に感じるんだけど、この PowerBook のネジの多さったらない。 

newsyslog

あまり増えないログはそんなに頻繁に rotate する意味がない。でも全然 rotate しないとさすがにいつの間にかすごいことになっていることもある。

newsyslog は定期的にサイズをチェックして、指定のサイズを越えたら rotate するという芸当が可能。これは使えるな。Apache の log だからって Apache 付属の rotatelogs を使わにゃならんつーこともないしね。

Linux では RedHat の開発した logrotate の方がメジャーだけど、newsyslog もよいな。logrotate の方が設定ファイルは冗長で分かりやすいかな。

イチロー、メジャー年間最多安打更新

ついでだ。なんか日記書きまくり。

素晴らしい。それがどんな世界のどんな内容の記録であろうとも、世界一は素晴らしいし、以前の記録が半世紀以上前のものということも、記録更新がどれだけ困難なものだったかを物語っており、その世界一の価値をますます高めている。

Netscape の技術を RedHat が買収してユーザー認証周りがオープンソースで登場してきそう

同じく Ryuzi_Kambe の日記経由

いろいろあがってるけど米Red Hat、米AOLからNetscapeの企業向け技術を買収 (Enterprise Watch) で。具体的には以下の2つか。

  • Netscape Deirectory Server
  • Netscape Certificate Management System

てーことはだ。ぶっちゃけると OpenLDAP に匹敵するものがオープンソースで登場してくるってことかな?

Mozilla Japan が本家風に

Ryuzi_Kambe の日記経由

見やすい。つーか想像以上にサイトリニューアルに関しては動きが早かったように思う。内部で動いている人たちはどういう人たちなんだろうか? 以前から感じているんだけど、Mozilla.org 界隈のサイト構築の手法って、結構参考になるんじゃないかな。そういうドキュメントはどこかに公開されないのだろうか。

FreeBSD でユーザー作成と同時にディレクトリを掘る

できて当然なんだろうけど、今までこの手の記述を見たことがなかったので自分の実験結果をメモ。

/usr/share/skel

以下に作っておけばディレクトリだろうがなんだろうが adduser したときにどかどか作られる。ま、man adduser すれば分かることなんだけど、本当にできてなんか嬉しかったので。

サーバをちょいいじる

変なアクセス見っけ

ふとルータに目をやると自分の覚えのないアクセスがチカチカしている。はてなー、外から何かきているなぁ、と思ってログを見ると案の定 sshd に対して適当なユーザーでいたずらしている人発見。オーストラリアからのアクセスだ。

rsa 鍵認証しか許可していないので成功するわきゃないんだけど、目の前でいたずらされ放題ってのもあんまり気分のいいものではないので逆にこっちからアクセスしてみた。

openssh 3.1p1

うーん、ほんとかどうか分からないけど今どきそのバージョンはどうだ? そんな ssh 解放しておいて自分が痛い目見ても知らないぞ。ついでに ftp は

wu-ftp 2.6.2

だった。こっちはまだまともか。ftp と ssh しか開いてないなんて目的が知れるけど、人んち叩くんなら ftp で生パスワード流すのはどうなのだ。

Apache のログを少々

ついでに Apache の log が膨れ上がっていたので

  • worm のアクセスは別なログに記録
  • 通常のアクセスも画像は記録しない
  • LAN 内のアクセスは記録しない

ようにして apache のログのディレクトリを作ってそこに放り込んでおいた。まーそこまでせんでも適当なタイミングでログを消す程度しかしてないんだけど、なんかあったときにノイズだらけのログじゃ分かるものも分からなくなっちゃうので。

Apache 2 のマニュアルはほんとに見やすいな。と思ったら最初のリンク先は正確じゃないな。SetEnvIf の記述は

SetEnvIf Attribute Regex env-attribute[=value] [env-attribute[=value]]

じゃないの。ローカルの IP アドレスをどうやって記述するのかちょっと悩んだが正規表現なら簡単だ。

参考

ついでに

  • cvsup
  • cygwin の mirror

を crontab に入れておいた。あーでも Windows マシン使ってないじゃん。

職場で入れて便利だったので

  • jman の環境を揃える

方法は

  1. portinstall jman
  2. A. 日本語マニュアル/ソフトウェア取得 からマニュアルのアーカイブを取ってきて pkg_add
    • ports でやろうとすると標準的な ports の supfile では manual は取ってこないので、この方法がたぶんいちばん楽。

そうだそうだ

オープンソースが日本のIT産業に与える影響とは?

人材を人財に昇華させるくらいに考えないとね。

Firebird の Cookie Manager

って、モーダルなダイアログなのですね。cookie の動きを確認しながらブラウズできないじゃん。

ということで久々に Mozilla に返り咲き。

About

例によって個人のなんちゃらです