Non ho un favicon.ico, ma IE lo richiede sempre.
È possibile impedire al browser di effettuare una richiesta per la favicon dal mio sito? Forse qualche META-TAG nell'intestazione HTML?
Non ho un favicon.ico, ma IE lo richiede sempre.
È possibile impedire al browser di effettuare una richiesta per la favicon dal mio sito? Forse qualche META-TAG nell'intestazione HTML?
Risposte:
Prima dirò che avere una favicon in una pagina Web è una buona cosa (normalmente).
Tuttavia, non è sempre desiderato e talvolta gli sviluppatori hanno bisogno di un modo per evitare il payload aggiuntivo. Ad esempio un IFRAME richiederebbe una favicon senza mostrarla. Peggio ancora, in Chrome e Android un IFRAME genererà 3 richieste di favicon:
"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
Quanto segue utilizza l'URI dei dati e può essere utilizzato per evitare false richieste favicon:
<link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon">
Per riferimenti vedi qui:
Il bug / comportamento di Chrome verrà probabilmente risolto nelle prossime versioni.
Ecco l'invio dei bug per il tuo voto:
AGGIORNAMENTO 1:
Dai commenti (jpic) sembra che Firefox> = 25 non gradisca più la sintassi sopra. Ho provato su Firefox 27 e non funziona mentre funziona ancora su Webkit / Chrome.
Quindi ecco quello nuovo che dovrebbe coprire tutti i browser recenti. Ho testato Safari, Chrome e Firefox:
<link rel="icon" href="data:;base64,=">
Ho lasciato fuori il nome "scorciatoia" dal valore dell'attributo "rel" poiché è solo per IE meno recenti e anche le versioni di IE <8 non gradiscono dataURIs. Non testato su IE8.
AGGIORNAMENTO 2:
Se devi convalidare il tuo documento con HTML5, usa questo:
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=">
sembra risolvere il problema.
data:image/png;base64,iVBORw0KGgo=
nel browser, salvarlo come favicon.ico
aka. svuotare il file PNG e archiviarlo nella radice del sito Web. Giusto?
Aggiungi la seguente riga alla <head>
sezione del tuo file HTML:
<link rel="icon" href="data:,">
Caratteristiche di questa soluzione:
href="#"
)reserves space
?
Credo di averlo visto (Non l'ho ancora provato o usato personalmente):
<link rel="shortcut icon" href="#" />
Qualcuno ha avuto un'esperienza simile?
MODIFICARE:
Ho appena testato lo snippet di cui sopra e su un aggiornamento forzato completo, nessuna richiesta favicon è stata vista in Fiddler. Ho testato contro IE8 (modalità Compat come standard IE7) e FF 3.6.
href
link ad alcune risorse statiche (memorizzate nella cache) che hai già caricato (ad esempio css o file di script) - per garantire che una pagina dinamica (non memorizzata nella cache) non venga richiesta due volte. (Solo per sicurezza poiché href="#"
tecnicamente punta alla pagina Web corrente).
Non puoi. Tutto quello che puoi fare è rendere l'immagine più piccola possibile e impostare alcune intestazioni di invalidazione della cache ( Expires
, Cache-Control
) lontano in futuro. Ecco cosa Yahoo! ha da dire sulle richieste favicon.ico.
Puoi usare .htaccess o le direttive del server per negare l'accesso a favicon.ico, ma il server invierà una risposta di accesso negata al browser e ciò rallenta comunque l'accesso alla pagina.
Puoi interrompere il browser che richiede favicon.ico quando un utente torna al tuo sito, facendolo rimanere nella cache del browser.
Innanzitutto, fornire una piccola immagine favicon.ico, potrebbe essere vuota, ma il più piccola possibile. Ne ho realizzato uno in bianco e nero con meno di 200 byte. Quindi, usando .htaccess o le direttive del server, imposta il file Expires header in un mese o due in futuro. Quando lo stesso utente torna sul tuo sito, questo verrà caricato dalla cache del browser e nessuna richiesta verrà inviata al tuo sito. Non ci sono più 404 nei log del server.
Se hai il controllo di un server Apache completo o forse di un server virtuale puoi farlo: -
Se il root del documento del server è / var / www / html, aggiungilo a /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>
Quindi un singolo favicon.ico funzionerà per tutti i siti ospitati virtuali dal momento che lo stai aliasando. Verrà estratto dalla cache del browser per un mese dopo la visita dell'utente.
Per .htaccess questo è segnalato per funzionare (non controllato da me): -
AddType image/x-icon .ico
ExpiresActive On
ExpiresByType image/x-icon "access plus 1 month"
Una soluzione molto semplice è inserire il seguente codice nel tuo .htaccess
. Ho avuto lo stesso problema e risolve il mio problema.
<IfModule mod_alias.c>
RedirectMatch 403 favicon.ico
</IfModule>
Riferimento: http://perishablepress.com/block-favicon-url-404-requests/
Nella nostra esperienza, con Apache che cade su richiesta di favicon.ico, abbiamo commentato le intestazioni extra nel file .htaccess.
Ad esempio avevamo Header impostato X-XSS-Protection "1; mode = block"
... ma ci eravamo dimenticati di eseguire in anticipo le intestazioni di a2enmod. Commentare le intestazioni extra inviate ha risolto il nostro problema favicon.ico.
Avevamo anche diversi host virtuali configurati per lo sviluppo e non ci riuscivamo con 500 Internal Server Error durante l'utilizzo di http: // localhost e il recupero di /favicon.ico. Se si esegue "curl -v http: //localhost/favicon.ico " e si riceve un avviso in merito al nome host che non si trova nella cache del resolver o qualcosa in tal senso, potrebbero verificarsi problemi.
Potrebbe essere semplice come non recuperare (l'abbiamo provato e non ha funzionato, perché la nostra causa principale era diversa) o cercare le direttive in apache2.conf o .htaccess che potrebbero causare strani messaggi di errore del server interno 500.
Abbiamo riscontrato un errore così rapido che non c'era nulla di utile nei registri degli errori di Apache e abbiamo trascorso un'intera mattinata a cambiare piccole cose qua e là fino a quando non abbiamo risolto il problema di impostare intestazioni extra quando ci siamo dimenticati di aver caricato mod_headers!
A volte questo errore si presenta quando HTML ha del codice commentato e il browser sta cercando di cercare qualcosa. Come nel mio caso, avevo commentato il codice di un modulo Web in pallone e lo stavo ottenendo.
Dopo aver trascorso 2 ore l'ho risolto nei seguenti modi:
1) Ho creato un nuovo ambiente Python e quindi ha generato un errore sulla riga HTML commentata, prima di questo mi è stato generato solo l'errore "GET /favicon.ico HTTP / 1.1" 404 "
2) A volte, quando avevo un codice duplicato, come un file Python esistente con lo stesso nome, allora ho visto anche questo errore, prova a rimuovere anche quelli
Puoi usare
<link rel="shortcut icon" href="http://localhost/" />
In questo modo non verrà effettivamente richiesto dal server.