Ich habe keine favicon.ico, aber der IE stellt immer eine Anfrage dafür.
Ist es möglich zu verhindern, dass der Browser von meiner Website aus eine Anfrage für das Favicon stellt? Vielleicht etwas META-TAG im HTML-Header?
Ich habe keine favicon.ico, aber der IE stellt immer eine Anfrage dafür.
Ist es möglich zu verhindern, dass der Browser von meiner Website aus eine Anfrage für das Favicon stellt? Vielleicht etwas META-TAG im HTML-Header?
Antworten:
Ich werde zuerst sagen, dass ein Favicon auf einer Webseite (normalerweise) eine gute Sache ist.
Dies ist jedoch nicht immer erwünscht, und manchmal benötigen Entwickler einen Weg, um die zusätzliche Nutzlast zu vermeiden. Zum Beispiel würde ein IFRAME ein Favicon anfordern, ohne es anzuzeigen. Am schlimmsten ist jedoch, dass in Chrome und Android ein IFRAME drei Anfragen nach Favoriten generiert:
"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 verwendet Daten-URI und kann verwendet werden, um gefälschte Favicon-Anforderungen zu vermeiden:
<link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon">
Referenzen finden Sie hier:
Der Chrome-Fehler / das Chrome-Verhalten wird wahrscheinlich in kommenden Versionen behoben.
Hier ist die Fehlerübermittlung, über die Sie abstimmen können:
UPDATE 1:
Aus den Kommentaren (jpic) geht hervor, dass Firefox> = 25 die obige Syntax nicht mehr mag. Ich habe auf Firefox 27 getestet und es funktioniert nicht, solange es noch auf Webkit / Chrome funktioniert.
Hier ist also der neue, der alle aktuellen Browser abdecken sollte. Ich habe Safari, Chrome und Firefox getestet:
<link rel="icon" href="data:;base64,=">
Ich habe den Namen "Verknüpfung" aus dem Attributwert "rel" weggelassen, da dies nur für ältere IE gilt und Versionen von IE <8 DataURIs ebenfalls nicht mögen. Nicht auf IE8 getestet.
UPDATE 2:
Wenn Sie Ihr Dokument zur Validierung anhand von HTML5 benötigen, verwenden Sie stattdessen Folgendes:
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=">
scheint das Problem zu lösen.
data:image/png;base64,iVBORw0KGgo=
im Browser öffnen und als favicon.ico
aka speichern . Leere PNG-Datei und speichere sie im Website-Stammverzeichnis. Recht?
Fügen Sie einfach die folgende Zeile zum <head>
Abschnitt Ihrer HTML-Datei hinzu:
<link rel="icon" href="data:,">
Merkmale dieser Lösung:
href="#"
) der Fall wäre.reserves space
?
Ich glaube ich habe das gesehen (Ich habe es nicht getestet oder persönlich verwendet)::
<link rel="shortcut icon" href="#" />
Hat jemand ähnliche Erfahrungen gemacht?
BEARBEITEN:
Ich habe gerade das obige Snippet getestet und bei einer erzwungenen vollständigen Aktualisierung wurden in Fiddler keine Favicon-Anfragen gesehen. Ich habe gegen IE8 (Compat-Modus als IE7-Standard) und FF 3.6 getestet.
href
Link zu einer statischen (zwischengespeicherten) Ressource, die Sie bereits geladen haben (z. B. CSS- oder Skriptdatei), um sicherzustellen, dass eine dynamische (nicht zwischengespeicherte) Seite nicht zweimal angefordert wird. (Nur um sicher zu gehen, da href="#"
technisch auf die aktuelle Webseite verwiesen wird).
Das kannst du nicht. Alles, was Sie tun können, ist, das Bild so klein wie möglich zu machen und einige Cache-Invalidierungs-Header ( Expires
, Cache-Control
) weit in die Zukunft zu setzen. Hier ist, was Yahoo! muss über favicon.ico Anfragen sagen .
Sie können .htaccess- oder Serveranweisungen verwenden, um den Zugriff auf favicon.ico zu verweigern. Der Server sendet jedoch eine Antwort mit verweigertem Zugriff an den Browser, wodurch der Seitenzugriff weiterhin verlangsamt wird.
Sie können den Browser anfordern, favicon.ico anzufordern, wenn ein Benutzer zu Ihrer Site zurückkehrt, indem Sie ihn im Browser-Cache belassen.
Stellen Sie zunächst ein kleines favicon.ico-Bild bereit, das leer, aber so klein wie möglich sein kann. Ich habe eine schwarz-weiße unter 200 Bytes gemacht. Stellen Sie dann mithilfe von .htaccess- oder Server-Anweisungen die Datei Expires-Header ein oder zwei Monate in der Zukunft ein. Wenn derselbe Benutzer zu Ihrer Site zurückkehrt, wird er aus dem Browser-Cache geladen und es wird keine Anfrage an Ihre Site gesendet. Keine weiteren 404 in den Serverprotokollen.
Wenn Sie die Kontrolle über einen vollständigen Apache-Server oder einen virtuellen Server haben, können Sie Folgendes tun:
Wenn das Stammverzeichnis des Serverdokuments "/ var / www / html" lautet, fügen Sie dies zu /etc/httpd/conf/httpd.conf:- hinzu.
Alias /favicon.ico "/var/www/html/favicon.ico"
<Directory "/var/www/html">
<Files favicon.ico>
ExpiresActive On
ExpiresDefault "access plus 1 month"
</Files>
</Directory>
Dann funktioniert ein einziges favicon.ico für alle virtuell gehosteten Sites, da Sie ein Aliasing durchführen. Es wird einen Monat nach dem Besuch des Benutzers aus dem Browser-Cache gezogen.
Für .htaccess wird berichtet, dass dies funktioniert (nicht von mir überprüft): -
AddType image/x-icon .ico
ExpiresActive On
ExpiresByType image/x-icon "access plus 1 month"
Eine sehr einfache Lösung ist der folgende Code in Ihrem .htaccess
. Ich hatte das gleiche Problem und es löst mein Problem.
<IfModule mod_alias.c>
RedirectMatch 403 favicon.ico
</IfModule>
Referenz: http://perishablepress.com/block-favicon-url-404-requests/
Nach unserer Erfahrung haben wir, als Apache auf Anfrage von favicon.ico umfiel, zusätzliche Header in der .htaccess-Datei auskommentiert.
Zum Beispiel hatten wir den Header X-XSS-Schutz auf "1; mode = block" gesetzt.
... aber wir hatten vorher vergessen, a2enmod-Header zu sudo. Das Kommentieren zusätzlicher gesendeter Header hat unser Problem mit favicon.ico behoben.
Wir hatten auch mehrere virtuelle Hosts für die Entwicklung eingerichtet und sind nur mit 500 Internal Server Error ausgefallen, wenn http: // localhost verwendet und /favicon.ico abgerufen wurde. Wenn Sie "curl -v http: //localhost/favicon.ico " ausführen und eine Warnung erhalten, dass sich der Hostname nicht im Resolver-Cache befindet oder etwas in diesem Sinne, können Probleme auftreten.
Es könnte so einfach sein, wie nicht abzurufen (wir haben das versucht und es hat nicht funktioniert, weil unsere Grundursache anders war) oder sich nach Anweisungen in apache2.conf oder .htaccess umzusehen, die möglicherweise seltsame 500 interne Serverfehlermeldungen verursachen.
Wir fanden, dass es so schnell fehlschlug, dass es in Apaches Fehlerprotokollen überhaupt nichts Nützliches gab, und verbrachten einen ganzen Morgen damit, hier und da kleine Dinge zu ändern, bis wir das Problem des Setzens zusätzlicher Header gelöst hatten, als wir vergessen hatten, mod_headers zu laden!
Manchmal tritt dieser Fehler auf, wenn HTML einen kommentierten Code enthält und der Browser versucht, nach etwas zu suchen. Wie in meinem Fall hatte ich Code für ein Webformular in der Flasche kommentiert und bekam diesen.
Nachdem ich 2 Stunden verbracht hatte, habe ich es folgendermaßen behoben:
1) Ich habe eine neue Python-Umgebung erstellt und dann einen Fehler in der kommentierten HTML-Zeile ausgegeben. Zuvor wurde nur der Fehler 'GET /favicon.ico HTTP / 1.1 "404' ausgegeben.
2) Manchmal, wenn ich einen doppelten Code hatte, wie eine Python-Datei mit demselben Namen, habe ich auch diesen Fehler gesehen. Versuchen Sie auch, diesen zu entfernen
Du könntest benutzen
<link rel="shortcut icon" href="http://localhost/" />
Auf diese Weise wird es nicht vom Server angefordert.