データベースから画像を提供するMVCのコントローラーがあります。
編集:これは、MVCで完全に標準的な手段でファイルを提供する場合でも発生します。
画像をリクエストするたびに、GoogleChromeはfavicon.icoも検索します。
「私も気にする必要がある」という他のことについての不必要な議論を避けるために、この例ではキャッシュを気にしないと仮定し、ファイルとともに常にHTTP応答200を返します。
私のコントローラーでは、次を返します。
return File(fileBytes, contentType);
Fiddler 2を検査した後、次の応答が生成されます。
HTTP / 1.1 200 OK
Cache-Control:public
Content-Type:image / gif
ETag:oYu19wKo + KEHkyxZQ2WXAA ==
Server:Microsoft-IIS / 7.0
X-AspNetMvc-Version:1.0
X-AspNet-Version:2.0.50727
X-Powered -作成者:ASP.NET
日付:2009年6月16日火曜日18:48:45 GMT
コンテンツ-長さ:29344
比較すると、これは私が(初めて)Googleロゴを要求したときのGoogleからのFiddlerでの応答です。
HTTP / 1.1 200 OK
コンテンツタイプ:image / gif
最終更新日:2006年6月7日水曜日19:42:34 GMT
日付:2009年6月16日火曜日18:50:54 GMT
有効期限:2010年6月16日水曜日18:50 :54 GMT
Cache-Control:public、max-age = 31536000
Server:gws
Content-Length:8706
Age:2
ただし、Chromeでは、画像を取得した後、Chromeは私のfavicon.icoを見つけようとします。Googleロゴをリクエストした後はこれを試しません。
なぜこれが起こっているのか考えはありますか?HTMLについての私の理解から、答えは応答ヘッダーになければなりません。確かにそれがクライアントが続けなければならないすべてだからですか?訂正してください!
編集2:多くの人が問題を完全に誤解しているようです。問題は、ファビコンの欠如とMVCでのエラー要求ではなく、コンテンツを含むWebページではなく、コンテンツタイプが「IMAGE/JPEG」の画像のみが読み込まれているときにファビコンを要求する問題です。「TEXT/HTML」のタイプ!!