favicon.icoをページ内のimg要素として出したい時がある。
例えば、URLからfavicon auto-discovery(?)してそのサイトのアイコンとして出したい時とか。
こんな感じのヤツ。
ウザいことにIEだけが一部のfaviconが表示されない。なんでだ!
http://del.icio.us/favicon.ico はOK http://flickr.com/favicon.ico は駄目。 (はてなダイアリーはOK、フォトライフは駄目)
Firefoxなどでは拡張子がicoであれば中身はpngでもいいのでiconファイル形式かどうかが関係するんだと思ってた。でもどうやら違うらしい。
% HEAD http://flickr.com/favicon.ico
200 OK
Connection: close
Date: Mon, 07 Aug 2006 07:31:28 GMT
Accept-Ranges: bytes
ETag: "13e-c88f22c0"
Server: Apache/2.0.52
Content-Length: 318
<strong>Content-Type: text/plain; charset=ISO-8859-1</strong>
Last-Modified: Sat, 03 Jul 2004 03:20:19 GMT
Client-Date: Mon, 07 Aug 2006 07:31:28 GMT
Client-Peer: 68.142.214.24:80
Client-Response-Num: 1
% HEAD http://del.icio.us/favicon.ico
200 OK
Connection: close
Date: Mon, 07 Aug 2006 07:31:39 GMT
Accept-Ranges: bytes
ETag: "18bc50a-57e-4250a771"
Content-Length: 1406
<strong>Content-Type: image/x-icon</strong>
Last-Modified: Mon, 04 Apr 2005 02:33:21 GMT
Client-Date: Mon, 07 Aug 2006 07:31:40 GMT
Client-Peer: 206.190.56.150:80
Client-Response-Num: 1
Content-Typeを見てるみたいです。 相手のWebサーバの設定は変えようがないので、
<?php
header('Content-Type: image/x-icon');
echo file_get_contents($_REQUEST['favicon']);
?>
こんなのを作ってやって、
<img src="favicon.php?favicon=http://flickr.com/favicon.ico />
こんな感じにする。 IE7ではどうなってるのかな。