web-dev-qa-db-ja.com

favicon.icoのリクエストを防ぐ方法は?

Favicon.icoを持っていませんが、IEは常にそれを要求します。

ブラウザが私のサイトのfaviconを要求するのを防ぐことは可能ですか? HTMLヘッダーにMETA-TAGがあるのでしょうか。

449
Daniel Silveira

最初に、Webページにfaviconがあるのは良いことだと思います(通常)。

しかし、それは常に望ましいとは限らず、開発者は余分なペイロードを回避する方法を必要とする場合があります。例えば、IFRAMEはそれを表示せずにfaviconを要求します。さらに悪いことに、ChromeとAndroidでは、IFRAMEはfaviconのために3つのリクエストを生成します。

"GET /favicon.ico HTTP/1.1" 404 183
"GET /Apple-touch-icon-precomposed.png HTTP/1.1" 404 197
"GET /Apple-touch-icon.png HTTP/1.1" 404 189

以下はデータURIを使用しており、偽のファビコン要求を回避するために使用できます。

<link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon"> 

参考文献はこちらをご覧ください。

Chromeのバグ/動作は、今後のバージョンではおそらく修正される予定です。

これはあなたが投票するためのバグ投稿です。

アップデート1:

コメント(jpic)から、Firefox> = 25は上記の構文を気に入らないようです。 Firefox 27でテストしましたが、まだWebkit/Chromeで動作している間は動作しません。

だからここにすべての最近のブラウザをカバーする必要があります新しいものです。 Safari、Chrome、Firefoxをテストしました。

<link rel="icon" href="data:;base64,=">

これは古いIE用であり、IE <8のバージョンではdataURIが気に入らないためです。 IE8ではテストされていません。

アップデート2:

あなたの文書がHTML 5に対して検証する必要がある場合は、代わりにこれを使用してください。

<link rel="icon" href="data:;base64,iVBORw0KGgo=">
499
Diego Perini

HTMLファイルの<head>セクションに次の行を追加するだけです。

<link rel="icon" href="data:,">

このソリューションの特徴:

  • 100%有効なHTML5
  • とても短い
  • IE 8以前からの問題は発生しません
  • ブラウザが現在のHTMLコードをfaviconとして解釈しないようにします(href="#"の場合)。
67
vog

私はこれを見たと思う (私はそれをテストしたり、個人的に使用したことはありませんが)

<link rel="shortcut icon" href="#" />

誰でも似たような経験がありますか?

編集:

上記のスニペットをテストしたところ、強制フルリフレッシュを実行しましたが、Fiddlerではfaviconの要求は見られませんでした。私はIE8(IE7標準としてのCompatモード)とFF 3.6に対してテストしました。

42
mlhDev

できません。できることは、その画像をできるだけ小さくして、将来的にキャッシュ無効化ヘッダー(ExpiresCache-Control)を設定することです。これが 何Yahoo! favicon.icoリクエストについて を言わなければなりません。

34
Ionuț G. Stan

Favicon.icoへのアクセスを拒否するには、.htaccessまたはserverディレクティブを使用できますが、サーバーはアクセス拒否の応答をブラウザに送信しますが、それでもページアクセスは遅くなります。

ユーザーがサイトに戻ったときにブラウザのfavicon.icoを要求しているブラウザを停止するには、ブラウザのキャッシュを維持するようにします。

まず、小さなfavicon.icoイメージを入力します。空白にすることもできますが、できるだけ小さくします。私は200バイト以下の白黒のものを作りました。次に、.htaccessディレクティブまたはサーバーディレクティブを使用して、ファイルExpiresヘッダーを1か月または2か月後に設定します。同じユーザーがあなたのサイトに戻ったとき、それはブラウザのキャッシュからロードされ、あなたのサイトにはリクエストが行きません。サーバー内の404もログに記録されません。

あなたが完全なApacheサーバーまたはおそらく仮想サーバーを制御しているなら、あなたはこれを行うことができます -

サーバー文書のルートが/ var/www/htmlの場合、これを/etc/httpd/conf/httpd.confに追加します。

Alias /favicon.ico "/var/www/html/favicon.ico"
<Directory "/var/www/html">
    <Files favicon.ico>
       ExpiresActive On
       ExpiresDefault "access plus 1 month"
    </Files>
</Directory>

エイリアスを作成しているので、単一のfavicon.icoがすべてのバーチャルホストサイトで機能します。ユーザーがアクセスしてから1ヶ月間、ブラウザのキャッシュから取得されます。

.htaccessの場合、これは機能することが報告されています(私は確認していません): -

AddType image/x-icon .ico
ExpiresActive On
ExpiresByType image/x-icon "access plus 1 month"
4
Anon1

非常に簡単な解決策はあなたの.htaccessに以下のコードを入れることです。私は同じ問題を抱えていました、そしてそれは私の問題を解決します。

<IfModule mod_alias.c>
    RedirectMatch 403 favicon.ico
</IfModule>

参照: http://perishablepress.com/block-favicon-url-404-requests/

3

nginxを使うなら

# skip favicon.ico
#
location = /favicon.ico {
    access_log off;
    return 204;
}
2
Vincent-cm

HTMLにコメントコードがあり、ブラウザが何かを探しているときに、このエラーが発生することがあります。私の場合のように、私はflaskのWebフォームのコードにコメントしていたので、これを取得していました。

2時間を費やした後、次の方法で修正しました。

1)新しいpython環境を作成した後、コメント付きのHTML行にエラーをスローしましたが、この前にエラー 'GET /favicon.ico HTTP/1.1 "404'がスローされました。

2)時々、同じ名前のpythonファイルが存在するなどの重複コードがある場合、このエラーが表示された場合、それらも削除してみてください。

0
ohsoifelse

私たちの経験では、Apacheはfavicon.icoの要求に応じて転倒していましたが、.htaccessファイルで追加のヘッダーをコメントアウトしました。

たとえば、ヘッダにX-XSS-Protection "1; mode = block"を設定しました。

...しかし、我々は事前にSudoのa2enmodヘッダを忘れていました。追加のヘッダをコメントアウトすることでfavicon.icoの問題は解決しました。

また、開発用にセットアップされた仮想ホストもいくつかあり、 http:// localhost を使用して/ faviconをフェッチすると、500 Internal Server Errorで失敗しました。イコ。 "curl -v http://localhost/favicon.ico "を実行して、ホスト名がリゾルバキャッシュにないことについての警告が表示された場合そのために何か、あなたは問題を経験するかもしれません。

それはフェッチしないのと同じくらい簡単であるか(私たちはそれを試みましたが、根本的な原因が異なっていたのでうまくいきませんでした)、あるいはApache2.confまたは.htaccessで疑わしい500 Internal Server Errorメッセージを引き起こす可能性があります。

Apacheのエラーログには何も役に立ちませんでした。mod_headersをロードするのを忘れていたときに余分なヘッダを設定する問題を解決するまで、ちょっとした変更を行っていました。

0
J. Declan Young