Nie mam pliku favicon.ico, ale IE zawsze wysyła żądanie.
Czy można uniemożliwić przeglądarce wysłanie żądania favicon z mojej witryny? Może jakiś META-TAG w nagłówku HTML?
Nie mam pliku favicon.ico, ale IE zawsze wysyła żądanie.
Czy można uniemożliwić przeglądarce wysłanie żądania favicon z mojej witryny? Może jakiś META-TAG w nagłówku HTML?
Odpowiedzi:
Najpierw powiem, że posiadanie favikonu na stronie internetowej jest dobrą rzeczą (zwykle).
Jednak nie zawsze jest to pożądane i czasami programiści potrzebują sposobu, aby uniknąć dodatkowej ładowności. Na przykład IFRAME zażąda favicon, nie pokazując go. Co najgorsze, w Chrome i Androidzie IFRAME wygeneruje 3 prośby o ulubione:
"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
Poniższe informacje wykorzystują identyfikator URI danych i mogą być użyte w celu uniknięcia fałszywych żądań favicon:
<link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon">
Aby zobaczyć odniesienia, zobacz tutaj:
Błąd / zachowanie Chrome prawdopodobnie zostanie naprawiony w nadchodzących wersjach.
Oto zgłoszenie błędu do głosowania:
AKTUALIZACJA 1:
Z komentarzy (jpic) wygląda na to, że Firefox> = 25 już nie lubi powyższej składni. Przetestowałem na Firefox 27 i nie działa, dopóki nadal działa na Webkit / Chrome.
Oto nowy, który powinien obejmować wszystkie najnowsze przeglądarki. Testowałem Safari, Chrome i Firefox:
<link rel="icon" href="data:;base64,=">
Pominąłem nazwę „skrótu” z wartości atrybutu „rel”, ponieważ dotyczy to tylko starszych IE, a wersje IE <8 również nie lubią dataURI. Nie testowano na IE8.
AKTUALIZACJA 2:
Jeśli potrzebujesz swojego dokumentu do sprawdzenia poprawności w stosunku do HTML5, użyj tego:
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
<link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=">
wydaje się rozwiązać problem.
data:image/png;base64,iVBORw0KGgo=
w przeglądarce i zapisać jako favicon.ico
aka. pusty plik PNG i zapisz go w katalogu głównym witryny. Dobrze?
Wystarczy dodać następujący wiersz do <head>
sekcji pliku HTML:
<link rel="icon" href="data:,">
Funkcje tego rozwiązania:
href="#"
)reserves space
?
Myślę, że to widziałem (Nie przetestowałem go jednak ani nie użyłem osobiście):
<link rel="shortcut icon" href="#" />
Czy ktoś miał podobne doświadczenie?
EDYTOWAĆ:
Właśnie przetestowałem powyższy fragment i po wymuszonym pełnym odświeżeniu w Fiddler nie było żadnych żądań ulubionych. Testowałem przeciwko IE8 (tryb Compat jako standardy IE7) i FF 3.6.
href
link do jakiegoś statycznego (buforowanego) zasobu, który już załadowałeś (np. Plik css lub skrypt) - aby upewnić się, że strona dynamiczna (niebuforowana) nie zostanie dwukrotnie wysłana. (Dla bezpieczeństwa, ponieważ href="#"
technicznie wskazuje na bieżącą stronę internetową).
Nie możesz Wszystko, co możesz zrobić, to uczynić ten obraz tak małym, jak to możliwe i ustawić nagłówki unieważniania pamięci podręcznej ( Expires
, Cache-Control
) daleko w przyszłości. Oto, co Yahoo! ma do powiedzenia na temat żądań favicon.ico.
Możesz użyć .htaccess lub dyrektyw serwera, aby odmówić dostępu do favicon.ico, ale serwer wyśle odpowiedź odmowy dostępu do przeglądarki, a to nadal spowalnia dostęp do strony.
Możesz zatrzymać przeglądanie żądań favicon.ico przez przeglądarkę, gdy użytkownik powróci do Twojej witryny, pozostając w pamięci podręcznej przeglądarki.
Najpierw podaj mały obraz favicon.ico, może być pusty, ale tak mały, jak to możliwe. Zrobiłem czarno-biały poniżej 200 bajtów. Następnie, używając .htaccess lub dyrektyw serwera, ustaw nagłówek pliku Wygasa miesiąc lub dwa w przyszłości. Gdy ten sam użytkownik wróci do Twojej witryny, zostanie ona załadowana z pamięci podręcznej przeglądarki i żadne żądanie nie trafi do Twojej witryny. Nigdy więcej 404 w logach serwera.
Jeśli masz kontrolę nad kompletnym serwerem Apache lub serwerem wirtualnym, możesz to zrobić: -
Jeśli katalog główny serwera to powiedz / var / www / html, dodaj go do /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>
Wtedy jeden favicon.ico będzie działał dla wszystkich wirtualnych hostowanych stron, ponieważ go aliasingujesz. Będzie pobierany z pamięci podręcznej przeglądarki przez miesiąc po wizycie użytkowników.
W przypadku .htaccess jest to zgłaszane do działania (nie sprawdzone przeze mnie): -
AddType image/x-icon .ico
ExpiresActive On
ExpiresByType image/x-icon "access plus 1 month"
Bardzo prostym rozwiązaniem jest wstawienie poniższego kodu do swojego .htaccess
. Miałem ten sam problem i to rozwiązało mój problem.
<IfModule mod_alias.c>
RedirectMatch 403 favicon.ico
</IfModule>
Odniesienie: http://perishablepress.com/block-favicon-url-404-requests/
Z naszego doświadczenia wynika, że gdy Apache przewrócił się na prośbę favicon.ico, skomentowaliśmy dodatkowe nagłówki w pliku .htaccess.
Na przykład mieliśmy nagłówek ustawiony na X-XSS-Protection „1; mode = block”
... ale zapomnieliśmy wcześniej o sudo a2enmod. Komentowanie wysyłanych dodatkowych nagłówków rozwiązało nasz problem z favicon.ico.
Mieliśmy także kilka wirtualnych hostów skonfigurowanych do programowania i nie powiodło się tylko z 500 wewnętrznym błędem serwera podczas korzystania z http: // localhost i pobierania /favicon.ico. Jeśli uruchomisz „curl -v http: //localhost/favicon.ico ” i zobaczysz ostrzeżenie, że nazwa hosta nie znajduje się w pamięci podręcznej resolvera lub coś w tym rodzaju, możesz napotkać problemy.
Może to być tak proste, że nie można pobrać (próbowaliśmy tego i nie działało, ponieważ nasza główna przyczyna była inna) lub rozejrzeć się za dyrektywami w apache2.conf lub .htaccess, które mogą powodować dziwne 500 komunikatów o błędach wewnętrznego serwera.
Okazało się, że tak szybko się nie udaje, że w dziennikach błędów Apache nie było nic użytecznego i spędziliśmy cały ranek zmieniając małe rzeczy tu i tam, dopóki nie rozwiązaliśmy problemu ustawiania dodatkowych nagłówków, gdy zapomnieliśmy załadować mod_headers!
Czasami ten błąd pojawia się, gdy HTML ma skomentowany kod i przeglądarka próbuje czegoś poszukać. Tak jak w moim przypadku skomentowałem kod formularza internetowego w kolbie i dostawałem to.
Po spędzeniu 2 godzin naprawiłem to w następujący sposób:
1) Utworzyłem nowe środowisko Pythona, a następnie zgłosił błąd w komentarzowym wierszu HTML, wcześniej został mi zgłoszony błąd „GET /favicon.ico HTTP / 1.1” 404 ”
2) Czasami, gdy miałem zduplikowany kod, taki jak plik Pythona o tej samej nazwie, wtedy też widziałem ten błąd, spróbuj je również usunąć
Możesz użyć
<link rel="shortcut icon" href="http://localhost/" />
W ten sposób nie będzie faktycznie wymagane od serwera.