« MacOS X 10.6.4 で広告を表示させたくないので… | トップページ | コーヒー豆を“ジャケ買い”した件 »

2010.12.10

Yahooブログの画像がMacで表示されないのは何故?

(末尾に追記があります)

cafe manimani のブログが好きで、GoogleReaderでフィードを購読しているんだけど、Macだといつも画像が表示されない。「画像が見つかりません」でおしまい。GoogleReaderから[v]してブラウザでブログのエントリを表示させても、画像だけが出てこない。Safari、Chrome、FireFox、Operaで同じ症状。

今日は金曜日でコードを書かない日だから、前々から気になっているこの件を“業務の一環として”ちょっと調べてみた。

まず、表示に失敗している画像の URLをエントリ本文から Macで見ると、たとえば

http://img.blogs.yahoo.co.jp/ybi/1/42/2c/cafe_manimani/folder/478829/

となっている。同じ画像を Windowsで見ると URLは、

http://img.blogs.yahoo.co.jp/ybi/1/42/2c/cafe_manimani/folder/478829/img_478829_51638699_0?1291881189

で、あれ? 違うじゃん?

Windowsで見た URLを Macの Safariで手打ちすると、ちゃんと表示される。んん〜、なんで? Macも Windowsも hostsを書き換えて広告画像が出ないようにしているけど(←極悪)、フルで手打ちすると表示されるということは hostsで落とされているわけではない。

ちなみに、おなじフルフルのほうの URLを FireFoxで手打ちすると画像データがテキストで表示される( バイナリなので文字化けして見える )。これは Windowsも Macも同じ。

Windowsで IE8に打ち込むとおいしそうなキンカンの画像がきちんと出てくる。FireFoxでバイナリが出ちゃってる状態でページ情報を見ると、MIMEが text/plainで、文字コードが UTF-8。文字扱いだ。元記事になっているエントリは text/htmlの EUC-JP。れれ? なんだぁ? なんだかヘンだなぁ。

しょうがないので Live HTTP headers を使って調べてみると、画像のHTTPヘッダでは

Content-Type: text/plain; charset=utf-8

となっている。なるほど。こりゃ困るわ。ブラウザが HTTPヘッダを信用していると画像が表示されないわけだ。ブラウザが HTTPヘッダをシカトして実データの雰囲気で「あ、画像じゃん」と判断してくれると、きちんと表示される仕組みだ。

んじゃぁ、なんで EUC-JPエンコードのブログ本文中の画像はバケないで FireFoxでも綺麗に表示されているのかというと、たぶん HTML中の imgタグを参照して「さあ、画像を読み込むぞ!」と決心してから src先を読み込んでいるからなんだと思う。ただし、Macでは imgタグの中の srcだろうとなんだろうと、ヘッダ違ってんだからダメなものはダメ、で表示されないのだろう。

なんか煩わしいなぁ。

(追記:2012/01/30)
きょう、cafe manimani さんのブログを見たら、写真が表示されていました。で、Macの Firefoxで画像だけ表示してヘッダを調べたところ、
Content-Type: image/jpeg
となっていたので、ちゃんと表示されたんだなぁ、と。ちなみに、Googleリーダのプレビューでは表示されていないけど、これはフィード受信時は古い記述だったのかも。画像だけ指定するとちゃんと表示されました。
やれやれ。

« MacOS X 10.6.4 で広告を表示させたくないので… | トップページ | コーヒー豆を“ジャケ買い”した件 »

ウェブページ

フォト

hide module-header

redirect to tafworks.com

GglAnlytcs