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


551

私はfavicon.icoを持っていませんが、IEは常にそれをリクエストします。

ブラウザが私のサイトからファビコンをリクエストしないようにすることはできますか?たぶん、HTMLヘッダーにメタタグがありますか?


21
+1良い質問ですが、最も簡単な解決策は有効なファビコンを追加することだけのようです:-)確かにこれは1分の仕事であり、あなたのサイトはすぐによりプロフェッショナルに見えますか?
Matt Wilko、2012年

4
空のfavicon.icoファイルを持つこともできます。これにより、リクエストが停止されます(最初のリクエストの後)が、ブラウザが空のファビコンをレンダリングすることはなく、通常はデフォルトのアイコンが何であれレンダリングします。
mxcl

38
私は、私は完全に質問者の暗黙の点に同意することを言っている:どのような目的のために何かを考え、余分な行うことが必須?さらに、「favicon.icoをリクエストして404を取得した場合とまったく同じように動作し、実際にはリクエストを行わず、さらには再度問い合わせるまでこのページは変更されます。」
ダニエル

36
これは大変なことです。JSONのみを提供するWebサービスがあり、変更を加えずにファイルを提供する基本機能すらありません(最初に、すべてのメソッドには、401/403を回避するために認証トークンが必要です)。失敗したリクエストをログに記録して後で分析できるようにします。ログにはファビコンのリクエストが常に殺到しています。
基本的な

3
2015年です。何かニュースはありますか?
Jonathan Prates、2015

回答:


575

最初に、Webページにファビコンがあることは(通常)良いことだと言います。

ただし、それが常に望ましいわけではなく、開発者が余分なペイロードを回避する方法を必要とする場合があります。たとえば、IFRAMEはファビコンを表示せずに要求します。最悪の場合、ChromeとAndroidではIFRAMEがファビコンの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,=">

「rel」属性値から「ショートカット」名を省略したのは、それが古いIEにのみ適用され、IE <8のバージョンもdataURIが好きではないためです。IE8ではテストされていません。

更新2:

HTML5に対して検証するドキュメントが必要な場合は、代わりにこれを使用してください:

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

1
鮮やかさ。投票数が非常に少ないという事実は、質問が出されてから数年が経過したという事実のみに関係しているという事実を推測する必要があります。
iconoclast 2013

21
UPDATE 2にはLollipopに関する問題がありました...追加<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=">すると問題が解決するようです。
アルコ、2015

2
うまくいけばdata:image/png;base64,iVBORw0KGgo=、ブラウザで開いてfavicon.ico別名で保存できます。空のPNGファイルをWebサイトのルートに保存します。正しい?
マーティン、

3
@Alkoその空のPNGファイルはまだ無効です。空のファイルを説明するデータURLを作成するだけの場合は、次を使用します。<link rel = "icon" href = "data:、">
vog

2
ブラウザは、index.htmlファイルにファビコンへの参照がない場合でもファビコンを要求する傾向があるので、このソリューションはどのようにこれを防止しますか?具体的には、Firefoxがドメインにアクセスするとすぐにそれを要求することに非常に積極的であることを確認しました。他のブラウザは後で、おそらくインデックスファイルがヘッダーをロードした後に、それを実行する可能性があります(ブラウザの内部に詳しい人がコメントしてください)。ファビコンがないと、潜在的な副作用があります。それを
ググる

131

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

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

このソリューションの機能:

  • 100%有効なHTML5
  • とても短い
  • IE 8以前の問題は発生しません
  • ブラウザに現在のHTMLコードをファビコンとして解釈させません(これはの場合ですhref="#")。

4
ローカルプロジェクトでChrome開発ツールをシャットダウンしようとしているだけなら、これが最も簡単でクリーンな方法です。
Andrew

これを拡大してください。ファビコンリクエストを停止するには、HTMLファイルにこれを含める必要がありますか?
Aakash Verma 2017

2
@AakashVermaはい、それだけです。他には何も必要ありません。(サイトがInternet Explorer 8以前をサポートする必要がある場合を除きます。)私はそれに応じて私の答えを改善しました。
ヴォグ2017

@asyntsどういう意味reserves spaceですか?
mvorisek

@Andrew Chrome DevToolsがこのソリューションで抱えている問題は何ですか?
Flinsch、

47

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

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

誰もが同様の経験をしましたか?

編集:

上記のスニペットをテストしたところ、強制的なフルリフレッシュで、Fiddlerにファビコンリクエストが表示されませんでした。IE8(IE7標準としての互換モード)およびFF 3.6に対してテストしました。


1
私のテストは、このトリックが機能することも示しています。ただし、href動的(キャッシュされていない)ページが2度リクエストされないようにするために、すでにロードされている静的(キャッシュされた)リソース(cssやスクリプトファイルなど)へのリンクがあります。(href="#"技術的には現在のWebページをポイントしているため、安全である必要があります)。
MARÖrlygsson

2
サファリで試してみました。ファビコンリクエストがホスティングページに再度アクセスします。
モーガンチェン

27
ブラウザー(Safari5 / Macなど)がサーバーからWebページを2回要求するようになるため、これはお勧めしません。
Manav 2011

2
@Manav Safari6 / Macではもはやそうではありません。
Marcel

2
ブームこれ!ありがとう:Dようやくそのアイコンの作成に取り掛かるまで、迷惑なエラーは表示されません。
Leon Gaban 2016年

39

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


7
彼はファビコンを持っていないと述べた。彼らはそれよりもはるかに小さくなりません。そして、存在しないファイルをキャッシュしても意味がありません。
innaM 2009

16
もし彼がファビコンを持っていないなら、彼はそれを作るべきだ、それが私のポイントだった。これより良い解決策はありません。それは論理的ではありませんか?リクエストを停止する可能性がない場合、キャッシュを使用しない限り、どうしますか?
Ionuț G. Stan

5

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

ユーザーがサイトに戻ったときに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>

次に、エイリアスを設定しているため、1つのfavicon.icoがすべての仮想ホストサイトで機能します。ユーザーがアクセスしてから1か月間、ブラウザのキャッシュから取得されます。

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

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

モジュールを有効にすることを忘れないでください:〜/ etc / apache2#a2enmod expires && service apache2 restart
Sino Boeckmann

4

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

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

リファレンス:http : //perishablepress.com/block-favicon-url-404-requests/


ここからリンクされている記事はとても良いですが、応答の構文は正しくないと思います。
エリカケイン

4

nginxを使用する場合

# skip favicon.ico
#
location = /favicon.ico {
    access_log off;
    return 204;
}

これはリクエストを妨げませんが、私はそれを代替として気に入っています。
QasimK 2018

もちろん、Webサーバーを制御できる場合は、
jbruni

1

Node.jsでは、

res.writeHead(200, {'Content-Type': 'text/plain', 'Link': 'rel="shortcut icon" href="#"'} );

0

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

たとえば、ヘッダーセットX-XSS-Protection "1; mode = block"がありました

...しかし、私たちは事前にa2enmodヘッダーをsudoするのを忘れていました。送信される追加のヘッダーをコメント化すると、favicon.icoの問題が解決しました。

また、開発用に設定されたいくつかの仮想ホストがあり、http:// localhostを使用して/favicon.icoをフェッチすると、500内部サーバーエラーでのみ失敗しました。「curl -v http://localhost/favicon.ico」を実行して、ホスト名がリゾルバーキャッシュにないこと、またはその影響について警告が表示される場合、問題が発生する可能性があります。

フェッチしない(私たちが試したが、根本的な原因が異なるために機能しなかった)のように単純な場合もあれば、apache2.confまたは.htaccessのディレクティブを探して、500の内部サーバーエラーメッセージが奇妙に表示される場合もあります。

Apacheのエラーログには何も役に立たず、mod_headersをロードするのを忘れたときに余分なヘッダーを設定する問題を解決するまで、朝から晩まで細かい部分を変更していました。


0

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

2時間かけて、次の方法で修正しました。

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

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


-10

あなたは使うことができます

<link rel="shortcut icon" href="http://localhost/" />

そうすれば、サーバーから実際に要求されることはありません。


1
一部のブラウザでは恐ろしいエラーメッセージが表示される可能性があります。また、HTTPS経由で提供される可能性のあるページでそのトリックを使用する場合は注意が必要です。
ブリギッドマクドネル2012

6
about:blankを使用する方が適切です。
ルーク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.