favicon.icoをページ内のimg要素として出したい時がある。

例えば、URLからfavicon auto-discovery(?)してそのサイトのアイコンとして出したい時とか。

good_favicon

こんな感じのヤツ。

ウザいことに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サーバの設定は変えようがないので、

&lt;?php
header('Content-Type: image/x-icon');
echo file_get_contents($_REQUEST['favicon']);
?&gt;

こんなのを作ってやって、

&lt;img src="favicon.php?favicon=http://flickr.com/favicon.ico /&gt;

こんな感じにする。 IE7ではどうなってるのかな。

Comments


Option