私はfavicon.icoを持っていませんが、IEは常にそれをリクエストします。
ブラウザが私のサイトからファビコンをリクエストしないようにすることはできますか?たぶん、HTMLヘッダーにメタタグがありますか?
私はfavicon.icoを持っていませんが、IEは常にそれをリクエストします。
ブラウザが私のサイトからファビコンをリクエストしないようにすることはできますか?たぶん、HTMLヘッダーにメタタグがありますか?
回答:
最初に、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=">
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=">
すると問題が解決するようです。
data:image/png;base64,iVBORw0KGgo=
、ブラウザで開いてfavicon.ico
別名で保存できます。空のPNGファイルをWebサイトのルートに保存します。正しい?
<head>
HTMLファイルのセクションに次の行を追加するだけです。
<link rel="icon" href="data:,">
このソリューションの機能:
href="#"
)。reserves space
ですか?
私はこれを見たと思います (私はそれをテストしたり、個人的に使用したりしていません):
<link rel="shortcut icon" href="#" />
誰もが同様の経験をしましたか?
編集:
上記のスニペットをテストしたところ、強制的なフルリフレッシュで、Fiddlerにファビコンリクエストが表示されませんでした。IE8(IE7標準としての互換モード)およびFF 3.6に対してテストしました。
href
動的(キャッシュされていない)ページが2度リクエストされないようにするために、すでにロードされている静的(キャッシュされた)リソース(cssやスクリプトファイルなど)へのリンクがあります。(href="#"
技術的には現在のWebページをポイントしているため、安全である必要があります)。
できません。できることは、そのイメージをできるだけ小さくして、将来的にキャッシュ無効化ヘッダー(Expires
、Cache-Control
)を設定することです。ここだ何は、Yahoo!favicon.icoリクエストについて言わなければなりません。
.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"
非常に簡単な解決策は、以下のコードをに入れます.htaccess
。私は同じ問題を抱えていて、それが私の問題を解決しました。
<IfModule mod_alias.c>
RedirectMatch 403 favicon.ico
</IfModule>
リファレンス:http : //perishablepress.com/block-favicon-url-404-requests/
nginxを使用する場合
# skip favicon.ico
#
location = /favicon.ico {
access_log off;
return 204;
}
私たちの経験では、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をロードするのを忘れたときに余分なヘッダーを設定する問題を解決するまで、朝から晩まで細かい部分を変更していました。
HTMLにコメント付きのコードがあり、ブラウザが何かを探しているときに、このエラーが発生することがあります。私の場合と同じように、フラスコ内のWebフォームのコードにコメントしていて、これを取得していました。
2時間かけて、次の方法で修正しました。
1)新しいPython環境を作成し、コメント付きのHTML行にエラーをスローしました。これが発生する前に、エラー 'GET /favicon.ico HTTP / 1.1 "404のみがスローされました。
2)場合によっては、同じ名前のpythonファイルが存在するなど、コードが重複していると、このエラーも表示され、それらも削除してみてください
あなたは使うことができます
<link rel="shortcut icon" href="http://localhost/" />
そうすれば、サーバーから実際に要求されることはありません。