IEのmime typeの判定

IEに限らずブラウザを使っていると、ダウンロードしたいものなのに、ブラウザで開いてしまうことが起こる。ここではmp3を開いたときに、quicktimeのアドオンが起動する場合にこれをダウンロードするように直す方法を調べてみる。

一般的にはファイルの種類を知りたいとき、拡張子というのがあるが、Mine Typeはこの拡張子をもっと一般的にしたものだと思う。サーバーはブラウザからの要求に対して、Content-typeヘッダを返す。たとえばhtmlデータを返す場合は以下のようなヘッダを返す。

Content-type: text/html

サーバがどのようなContent-typeを返すかは、通常拡張子によって決まると思われる。apacheなどの場合はmod-mimeのAddTypeなどを使っていろいろカスタマイズできるのだろう。またPerlなどのCGIの場合には自分でContent-typeを指定することもできる。

IEがこのContent-typeを受け取ったときどう処理されるかはここなどに書いてあり、ここにも要約があるが、複雑みたいなので、ここでは勝手に解釈して作業を続行する。

問題のmp3の時、サーバはContent-typeとして、audio/mpegを返していた。これを調べるにはレスポンスヘッダを見れるダウンロードマネージャを使ったり、プロキシで見てみたりいろいろやり方はあるが、ここではスルー。

このaudio/mpegの時、IEがどう動くかだが多分レジストリーの
HKEY_CLASSES_ROOT\MIME\Database\Content Type\audio/mpeg
を見ているのだろう。で、このキーの中のCLSIDで指定されているGUIDのコンポーネントを起動しているものと思われる。ここでは
{4063BE15-3B08-470D-A0D5-B37161CFFD69}
になっていた。これ以上はCOMの話になると思うので詳しくは書かないが、ここからレジストリキー

HKEY_CLASSES_ROOT\CLSID\{4063BE15-3B08-470D-A0D5-B37161CFFD69}
をみて動作しているものと思われる。

そこでレジストリーから
HKEY_CLASSES_ROOT\CLSID\{4063BE15-3B08-470D-A0D5-B37161CFFD69}
を削除してみたら、mp3がquicktimeによるアドオン再生から、ダウンロードに変わって希望の動作ができたので終了。

ちなみにfirefoxの場合は、オプションのプログラムで設定できるものと思われる。
firefox-contenttype

Windows XPでDNSキャッシュを無効にする

現状のDNSキャッシュを見るにはコマンドプロンプトを実行して、以下のように打ち込む。

> ipconfig /displaydns

DNSキャッシュをクリアするには以下のように打ち込む。

> ipconfig /flushdns

DNSキャッシュ機能をを無効にするには以下のように打ち込む。

> net stop dnscache

有効に戻すには以下のようにする。

> net start dnscache

DNSキャッシュが有効な期限はDNSリソースレコードのTTLとレジストリの設定値に依存する。DNSがポジティブレスポンスを返したときは、TTLとレジストリの設定値の低いほうの値が使われる。このレジストリのキーはHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNSCache\ParametersにあるMaxCacheTtl(REG_DWORD)でデフォルトで86400秒になっている。

ネガティブレスポンスのときは同じキーのMaxNegativeCacheTtl(REG_DWORD)で設定されデフォルトでは900秒になっている。ネガティブレスポンスをキャッシュしたくない場合はこの値を0にすればいい。

参考:http://support.microsoft.com/kb/318803