790 Stimmen

Wie kann man favicon.ico-Anfragen verhindern?

Ich habe kein favicon.ico, aber mein Browser fordert es immer an.

Ist es möglich, den Browser daran zu hindern, eine Anfrage nach dem Favicon von meiner Website zu stellen? Vielleicht mit einem META-TAG im HTML-Header?

35 Stimmen

+1 Gute Frage, aber es scheint, dass die einfachste Lösung darin besteht, ein gültiges Favicon hinzuzufügen :-) Sicherlich ist das eine Sache von einer Minute und Ihre Website sieht sofort professioneller aus?

2 Stimmen

Ich mag diese Frage, möchten Sie vielleicht zu erforschen Kodierung einer base64 Favicon innerhalb Ihrer Seite (zugegeben, müssen Sie ein Symbol erste dann zu bekommen).

7 Stimmen

Sie können auch eine leere favicon.ico-Datei verwenden. Dadurch werden die Anfragen (nach der ersten) gestoppt, aber der Browser rendert nicht ein leeres Favicon, wo er normalerweise das Standardsymbol rendert.

736voto

Diego Perini Punkte 7613

Zunächst möchte ich sagen, dass ein Favicon auf einer Webseite (normalerweise) eine gute Sache ist.

Dies ist jedoch nicht immer erwünscht, und manchmal brauchen die Entwickler eine Möglichkeit, die zusätzliche Nutzlast zu vermeiden. Zum Beispiel würde ein IFRAME ein Favicon anfordern, ohne es anzuzeigen. Schlimmer noch, in Chrome und Android generiert ein IFRAME 3 Anfragen für Favicons:

"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

Das folgende Beispiel verwendet Daten-URI und kann verwendet werden, um gefälschte Favicon-Anfragen zu vermeiden:

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

Für Referenzen siehe hier:

UPDATE 1:

Aus den Kommentaren (jpic) geht hervor, dass Firefox >= 25 die obige Syntax nicht mehr mag. Ich habe es mit Firefox 27 getestet und es funktioniert nicht, während es mit Webkit/Chrome noch funktioniert.

Hier ist also die neue Version, die alle aktuellen Browser abdecken sollte. Ich habe Safari, Chrome und Firefox getestet:

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

Ich habe den "Shortcut"-Namen aus dem "rel"-Attributwert weggelassen, da dies nur für ältere IE-Versionen gilt und IE-Versionen < 8 ebenfalls keine dataURIs mögen. Nicht auf IE8 getestet.

UPDATE 2:

Wenn Sie Ihr Dokument gegen HTML5 validieren müssen, verwenden Sie stattdessen dies:

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

1 Stimmen

Hervorragend. Ich vermute, dass die Tatsache, dass Sie so wenige Stimmen bekommen haben, nur damit zu tun hat, dass mehrere Jahre vergangen sind, seit die Frage gestellt wurde, und weniger clevere Antworten mehr Zeit hatten, Stimmen zu sammeln.

36 Stimmen

Ihr UPDATE 2 hatte Probleme mit Lollipop...Hinzufügen <link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo="> scheint das Problem zu lösen.

3 Stimmen

Wenn ich es richtig verstanden habe, kann ich die data:image/png;base64,iVBORw0KGgo= im Browser, speichern Sie es als favicon.ico alias. leere PNG-Datei und speichern Sie sie in Website Root. Richtig?

266voto

vog Punkte 20687

Fügen Sie einfach die folgende Zeile in die Datei <head> Abschnitt Ihrer HTML-Datei:

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

Merkmale dieser Lösung:

  • 100% gültiges HTML5
  • sehr kurz
  • verursacht keine Macken von IE 8 und älter
  • führt nicht dazu, dass der Browser den aktuellen HTML-Code als Favicon interpretiert (was bei href="#" )

10 Stimmen

Wenn Sie nur versuchen, Chrome Devtools für ein lokales Projekt zu schließen, ist dies bei weitem der einfachste und sauberste Weg, dies zu tun.

2 Stimmen

Bitte erläutern Sie dies. Muss ich dies einfach in meine HTML-Datei einfügen, um die Favicon-Anfrage zu stoppen?

4 Stimmen

@AakashVerma Ja, das ist alles. Es wird nichts anderes benötigt. (Es sei denn, Ihre Website muss Internet Explorer 8 oder älter unterstützen.) Ich habe meine Antwort entsprechend verbessert.

61voto

mlhDev Punkte 2004

Ich glaube, ich habe das gesehen (Ich habe es allerdings nicht getestet oder persönlich benutzt) :

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

Hat jemand ähnliche Erfahrungen gemacht?

EDITAR:

Ich habe gerade das obige Snippet getestet und bei einer erzwungenen vollständigen Aktualisierung wurden keine Favicon-Anfragen in Fiddler gesehen. Ich testete gegen IE8 (Compat-Modus als IE7-Standards) und FF 3.6.

1 Stimmen

Meine Tests zeigen auch, dass dieser Trick funktioniert. Allerdings müsste ich die href Link zu einer statischen (zwischengespeicherten) Ressource, die Sie bereits geladen haben (z. B. eine CSS- oder Skriptdatei) - um sicherzustellen, dass eine dynamische (nicht zwischengespeicherte) Seite nicht zweimal angefordert wird (nur zur Sicherheit, da href="#" verweist technisch auf die aktuelle Webseite).

0 Stimmen

Das hilft nicht, wenn die Anfragen von außen kommen oder von einer Seite, die nicht unter der eigenen Kontrolle steht.

0 Stimmen

@rxgx - was meinen Sie? Zum Beispiel, wenn jemand das Favicon direkt anfordert? Oder meinen Sie, wenn die HTML-Quelle nicht bearbeitet werden kann?

37voto

Ionuț G. Stan Punkte 168218

Das können Sie nicht. Alles, was Sie tun können, ist, das Bild so klein wie möglich zu machen und einige Cache-Invalidierungs-Header zu setzen ( Expires , Cache-Control ) weit in der Zukunft. Hier ist was Yahoo! zu sagen hat über favicon.ico-Anfragen.

9 Stimmen

Er sagte, er habe kein Favicon. Sie werden nicht viel kleiner als das. Und es macht keinen Sinn, nicht vorhandene Dateien zwischenzuspeichern.

18 Stimmen

Wenn er kein Favicon hat, sollte er eines erstellen, das war mein Punkt. Es gibt keine bessere Lösung als diese. Ist das nicht logisch? Wenn es keine Möglichkeit gibt, Anfragen zu stoppen, es sei denn, Sie verwenden Caching, was tun Sie?

4 Stimmen

Sie schalten es aus. Wenn Sie kein Favicon wollen und auch keine Fehleranfragen in Ihren Fehlerprotokollen haben wollen, dann sollten Sie es ausschalten. Warum ist das so schwer zu verstehen?

17voto

Vincent-cm Punkte 974

Wenn Sie nginx verwenden

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

1 Stimmen

Das verhindert die Anfrage zwar nicht, aber ich finde sie als Alternative gut.

3 Stimmen

Sicher, wenn Sie den Webserver kontrollieren können.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X