カレンダー

2010/1
24252627282930
31      
2010/2
 12356
78910111213
141516181920
212223252627
28      
2010/3
 12346

最近の記事

RSS

最近のコメント

月別アーカイヴ

カテゴリー

Blogを公開している友人

公開所属グループ

プロフィール

a person powered by ototoy blog

モヘンジョだろ!!

2010年02月13日

dolipoとかDownThemAll!とototoy [ototoy]

dolipoなどのネット高速化ユーティリティやDownThemAll!などのブラウザプラグイン形式のダウンロードユーティリティが、高速化の為に使っているのはHTTPリクエストで大きなファイルを分割するように指示し、大きなファイルを待っている間、他のメディアファイル(画像やSWFなど)が転送できない問題を解決するという手法のようだ。

このようなテクニックはRANGEヘッダやIF-RANGEヘッダで実現するのだが、ototoyの場合ダウンロードファイルは動的に生成し、用が済んだら削除するため、リクエストがRANGEごとに分かれて多重に来たとしても応えることが難しい。不可能とは言えないが、完全にユーザーにファイルが渡ったか判断するのはかなり困難だ。

そこで、今日ふとRANGE付きのリクエストに全部403 Forbiddenレスポンスを返してみたらどうなるだろうということを思いついて早速開発環境で実験してみた。つまり、403でユーティリティ側が「あ、ダメなんだね」って気がついて、改めてファイルの全レンジを普通にダウンロードし直すだろうという仮説と期待に基づいて、拒否ってみたわけだ。

サーバログを見ながらDownThemAll!で試してみたが、結果、ダウンロードは完走せずNGだった。ログを見てると、やはりRANGEヘッダでの多重リクエストが検出され、そこで意図通りスクリプトは403を返しているのだが。

403の定義を読んでみると、リクエストに対応できない場合も返していいようなことが書いてあったので、ユーティリティ側で403が返って来た場合の処理を適切に書けば問題は解決するはずなのだが。

というわけで、手抜きの割には良いKludgeだと思ったのだがあえなく挫折。手間をかけてRANGE対応するしかないような雰囲気だ。

| Posted By nt 投稿日: 2010年2月13日 3時38分 更新日: 2010年2月13日 5時53分

コメント

name:
comment:
【コメントに関する注意事項】
記事と全く関連性のないコメント(例:宣伝目的のコメントスパムなど)は、オーナーの判断により削除される場合があります。 - レコミュニ会員としてコメントする

トラックバック