はりをきば

そこにピカマンがいる限り 私はテイッハットウッをやめない

画像検索で見つけたFC2ブログの画像が見れない(404エラーを吐く)件

¯注意
この記事はを最後に更新されていない。
更新日が1年以上前の記事はリンク切れしていたり、情報としては役に立たなくなっている可能性あり。
ˆMixed Contentについて
この記事は投稿日が古い為、記事中の画像は非SSL(http://)で貼られている。(※投稿画像以外は全てSSL)
この件に関して詳しくはこちらを参照。

前々から気になってたことがある。

画像検索でHITしたFC2ブログの画像は何故検索エンジンにフルサイズでキャッシュされないのか。

フルサイズでキャッシュされているところを見たことがない。


それともう1つ。

何故か画像検索でHITした画像だけ、そのFC2ブログ記事の該当する画像URLが404で開けない。


…何言ってるかわかんないね。
ggってみたら少し情報があった。

趣味の箱 2.5 |FC2ブログの画像表示について

http://hobbybox2.blog54.fc2.com/blog-entry-439.html

まさにこんな状態。
画像検索結果経由だけでなく
直接FC2ブログの記事から画像を開いてもURLに「-origin」があると404で開けない。
(originを外せば開ける)


何故こうなった? もう少しggると次の記事がHIT。

跡書き - FC2 BLOG パスワード認証

http://in1111.blog.fc2.com/blog-entry-309.html

「*.fc2.com」と空以外のリファラで弾いてると見て間違いはないのだろうが。。


…納得いかないことがある。


仮にリファラにより遮断しているとするなら、直接FC2ブログの画像URLを
アドレスバーにコピペして開けばリファラなしで飛ぶはず。


なのに、俄然404のままで画像が姿を見せる気配がない。。



追記

なんで一度404食らうと以後画像URLコピペで飛んでも喰らい続けるのか、ようやくわかった。


FC2ブログの画像サーバーはリファラをチェックし、
外部サイトのリファラを検出すると301ステータスで404ページにリダイレクトすることが判明。



この301というのは、HTTPにおいて恒久的なデータ移転を示すもの。
詳しくは以下のWikipedia参照。

HTTPステータスコード - Wikipedia

http://ja.wikipedia.org/wiki/HTTP%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89#3xx_Redirection_.E3.83.AA.E3.83.80.E3.82.A4.E3.83.AC.E3.82.AF.E3.82.B7.E3.83.A7.E3.83.B3


この301ステータスにはブラウザ共通の落とし穴がある。
そのリダイレクト情報がローカルにキャッシュされるという点だ。
HTMLや画像のキャッシュとは訳が違い、スーパーリロードでキャッシュを更新することができない。


…自分でも何言ってるかわからないので3行でまとめる。


要するに、

  • 一度でも画像検索経由などで外部サイトのリファラをもった状態でFC2ブログの画像を踏むと
  • ブラウザに「以後、この画像へのアクセスはもれなく404に飛ばすように☆」と教え込まれ
  • その後キャッシュを消さない限り、リファラ関係なくその画像は404で閲覧不可になる。

と、いうこと。


゚.・(#`д´)・.゚ うざっ!!




原因がわかったところで、何とかできないかggったら出てくる出てくる。

chromeは、301リダイレクトをキャッシュしている - too_youngの日記

http://d.hatena.ne.jp/too_young/20110303/1299149420

444 Failed: 301 リダイレクトをchromeがキャッシュする

http://sikaku444.blogspot.jp/2010/04/301-chrome.html

.htaccessによるリダイレクトをやめてもIE9のみリダイレクトされ続ける

http://social.technet.microsoft.com/Forums/ja-JP/internetexplorerja/thread/3185f4a3-0041-4526-96f6-a30ff78528b3/


クライアント側での対処法は、やはりキャッシュ一括削除しかないっぽい。
ここで注意すべきはIE。
IEはキャッシュ削除しても301の情報だけは残る
(これに気づくのに1時間かかった。ハメられた。)


IEの場合、上に貼ったはてダのコメントにあるように
InPrivateモードで起動し、301を埋め込まれた404画像のURL(-origin付き)を
一度アドレスバーにコピペで踏む。


完全に読み込みが終わったらInPrivateモードを閉じ、IEを通常起動。
通常IEで再びその画像URLをコピペで踏むと
以後、また外部から踏んで301植え直ししない限りちゃんと表示される。



そもそも何故404?

よくわからない条件分岐で弾かれる云々はともかく、
画像自体はちゃんとそこに存在する。


それを404とか、頭おかしいの?
常識的に考えて普通は403。


既にリクエストが投稿されているようだが未だに受理されていない。

画像が外部からの直リンクではなぜか「404NotFound」。403にすべきでは。 - FC2リクエスト

http://request.fc2.com/view_wish.php?wid=5_1268236423_747040

つーか何故301?

エラーページのリダイレクトステータスは常識的に考えて302307
301はwwwやindex.html有無の統一(URL正規化)にしか使わない。
(というかそれ以外で普通使うもんじゃない)




…言っちゃ悪いけど、FC2ブログの担当者の頭は大丈夫か?


FC2という企業自体アレだけど
仮にも大手ブログのブログシステムがここまでいい加減だとは思わんかった。


そんな意味不なブログサービスで「○○画像まとめ」や写真日記みたいな
画像メインの用途に使ってる人の気もどうかしてる。