Favicon.ico अनुरोधों को कैसे रोकें?


548

मेरे पास एक favicon.ico नहीं है, लेकिन IE हमेशा इसके लिए एक अनुरोध करता है।

क्या ब्राउज़र को मेरी साइट से फ़ेविकॉन के लिए अनुरोध करने से रोकना संभव है? शायद HTML हैडर में कुछ META-TAG?


21
+1 अच्छा सवाल है, लेकिन ऐसा लगता है कि सबसे आसान समाधान सिर्फ एक वैध फ़ेविकॉन जोड़ना है :-) निश्चित रूप से यह एक मिनट का काम है और आपकी साइट सीधे और अधिक पेशेवर लगती है?
मैट विलको

4
आपके पास एक खाली favicon.ico फ़ाइल भी हो सकती है। यह अनुरोधों (पहले के बाद) को रोक देगा, लेकिन ब्राउज़र को एक खाली फ़ेविकॉन को प्रस्तुत करने का कारण नहीं होगा जहां यह आमतौर पर जो कुछ भी डिफ़ॉल्ट रूप से प्रदान करता है।
mxcl 14

38
क्या प्रयोजन के लिए कुछ होगा: मैं कहना है कि मैं प्रश्नकर्ता के गर्भित बिंदु पूरी तरह से सहमत है अतिरिक्त बनाया जा अनिवार्य ? और आगे, यह कैसे होता है कि हम केवल प्रतिक्रिया के लिए कुछ मेटा डेटा नहीं जोड़ सकते हैं, "बिल्कुल वैसा ही व्यवहार करें जैसा कि आपने favicon.ico से अनुरोध किया और 404 मिला, केवल वास्तव में अनुरोध नहीं करते हैं और आगे तब तक फिर से नहीं पूछते हैं। यह पृष्ठ बदलता है ”।
डैनियल

36
यह एक ऐसा दर्द है। मेरे पास एक webservice है जो केवल JSON की सेवा करती है और कुछ परिवर्तनों के बिना फ़ाइलों की सेवा करने की मूल क्षमता भी नहीं है (एक शुरुआत के लिए, प्रत्येक विधि को 401/403 से बचने के लिए एक सामान्य टोकन की आवश्यकता होती है)। मैं विफल अनुरोधों को लॉग करता हूं इसलिए मैं बाद में उनका विश्लेषण कर सकता हूं - लॉग लगातार एक फेविकॉन के अनुरोधों से भरे हुए हैं।
बेसिक

3
यह 2015 है। इसके बारे में कोई खबर?
जोनाथन

जवाबों:


573

मैं पहले कहूंगा कि वेब पेज में फ़ेविकॉन होना एक अच्छी बात है (सामान्य रूप से)।

हालांकि, यह हमेशा वांछित नहीं होता है और कुछ समय के लिए डेवलपर्स को अतिरिक्त पेलोड से बचने का एक तरीका चाहिए। उदाहरण के लिए एक IFRAME बिना दिखाए एक फ़ेविकॉन का अनुरोध करेगा। अभी तक क्रोम और एंड्रॉइड में सबसे खराब 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:

टिप्पणियों (जेपीआईसी) से यह फ़ायरफ़ॉक्स की तरह दिखता है = = 25 उपरोक्त वाक्य रचना को पसंद नहीं करता है। मैंने फ़ायरफ़ॉक्स 27 पर परीक्षण किया और यह तब भी काम नहीं करता है जब यह अभी भी वेबकिट / क्रोम पर काम करता है।

तो यहाँ नया है जो सभी हाल के ब्राउज़रों को कवर करना चाहिए। मैंने सफारी, क्रोम और फ़ायरफ़ॉक्स का परीक्षण किया:

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

मैंने "rel" विशेषता मान से "शॉर्टकट" नाम को छोड़ दिया क्योंकि यह केवल पुराने IE के लिए है और IE <8 के संस्करण या तो dataurIs को पसंद नहीं करता है। IE8 पर परीक्षण नहीं किया गया।

अद्यतन 2:

अगर आपको इसके बजाय HTML5 के उपयोग के लिए अपने दस्तावेज़ को मान्य करने की आवश्यकता है:

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

1
प्रतिभाशाली। मुझे इस तथ्य का अनुमान लगाना है कि आपने बहुत कम वोट प्राप्त किए हैं, केवल इस तथ्य के साथ करना है कि प्रश्न पूछे जाने के बाद से कई साल बीत चुके हैं, और कम चतुर उत्तरों के पास वोट इकट्ठा करने के लिए अधिक समय था।
iconoclast

20
आपके UPDATE 2 में लॉलीपॉप पर मुद्दे थे ... <link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo=">इस मुद्दे को हल करने के लिए जोड़ना प्रतीत होता है।
एल्को जूल

2
अगर मुझे यह सही लगा, तो मैं data:image/png;base64,iVBORw0KGgo=ब्राउज़र में खोल सकता हूं , इसे favicon.icoउर्फ के रूप में सहेजें । PNG फ़ाइल को खाली करें और उसे वेबसाइट रूट में स्टोर करें। सही?
मार्टिन

3
@Alko कि खाली PNG फ़ाइल अभी भी अमान्य है। यदि यह केवल एक डेटा URL बनाने के बारे में है जो एक खाली फ़ाइल का वर्णन करता है, तो उपयोग करें: <लिंक rel = "आइकन" href = "डेटा:">
vog

2
अगर सूचकांक में इसका कोई सन्दर्भ नहीं है, तो भी ब्राउज़र फ़ेविकॉन से अनुरोध करते हैं, तो यह समाधान इसे कैसे रोकेगा? विशेष रूप से, मैंने देखा है कि फ़ायरफ़ॉक्स बहुत ही आक्रामक है, जैसे ही आप किसी डोमेन पर जाते हैं। अन्य ब्राउज़र इसे बाद में कर सकते हैं, हो सकता है कि इंडेक्स फ़ाइल द्वारा हेडर लोड करने के बाद (किसी व्यक्ति को ब्राउज़र्स के अधिक ज्ञान के साथ टिप्पणी करें)। एक favicon होने के संभावित दुष्प्रभाव नहीं हैं, बस इसे Google करें, या: stackoverflow.com/questions/4269695/…
juanheyns

131

बस <head>अपनी HTML फ़ाइल के अनुभाग में निम्न पंक्ति जोड़ें :

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

इस समाधान की विशेषताएं:

  • 100% वैध HTML5
  • बहुत छोटा
  • IE 8 और पुराने से किसी भी quirks नहीं है
  • ब्राउज़र को वर्तमान HTML कोड को फ़ेविकॉन के रूप में व्याख्या नहीं करता है (जो कि मामला होगा href="#")

4
यदि आप किसी स्थानीय परियोजना पर क्रोम देवटूलों को बंद करने का प्रयास कर रहे हैं, तो यह अब तक का सबसे आसान और साफ रास्ता है।
एंड्रयू

कृपया इस पर विस्तार करें। क्या मुझे फ़ेविकॉन अनुरोध को रोकने के लिए बस अपने HTML फ़ाइल में इसे शामिल करने की आवश्यकता है?
आकाश वर्मा

2
@ आकाशवाणी हां, बस इतना ही। और कुछ नहीं चाहिए। (जब तक आपकी साइट को इंटरनेट एक्सप्लोरर 8 या पुराने का समर्थन करने की आवश्यकता नहीं है।) मैंने उसी के अनुसार अपने उत्तर में सुधार किया।
वोग

@asynts तुम क्या मतलब है reserves space?
मावेरेसेक

@ और क्या समस्या है कि इस समाधान के साथ क्रोम DevTools है?
फ्लिंच

47

मुझे विश्वास है कि मैंने यह देखा है (मैंने व्यक्तिगत रूप से इसका परीक्षण नहीं किया है या इसका उपयोग नहीं किया है):

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

किसी को भी इसी तरह का अनुभव था?

संपादित करें:

मैंने सिर्फ ऊपर के स्निपेट का परीक्षण किया और एक मजबूर पूर्ण ताज़ा पर, फ़िडलर में कोई फ़ेविकॉन अनुरोध नहीं देखा गया। मैंने IE8 (IE7 मानकों के रूप में कम्पोजिट मोड) और FF 3.6 के खिलाफ परीक्षण किया।


1
मेरे परीक्षण भी संकेत देते हैं कि यह चाल काम करती है। हालाँकि, मेरे पास hrefकुछ स्थिर (कैश्ड) संसाधन का लिंक होगा, जिन्हें आपने पहले ही लोड किया है (उदाहरण के लिए css या स्क्रिप्ट फ़ाइल) - यह सुनिश्चित करने के लिए कि एक डायनामिक (नॉन-कैश्ड) पेज दो बार अनुरोध नहीं किया गया है। (बस href="#"वर्तमान वेब पेज पर तकनीकी रूप से इंगित करने के लिए सुरक्षित होना चाहिए )।
मेर Mrlygsson

2
मैंने सफारी में कोशिश की। फ़ेविकॉन अनुरोध होस्टिंग पृष्ठ को फिर से हिट करता है।
मॉर्गन चेंग

27
मैं इसका सुझाव नहीं दूंगा, क्योंकि यह दो बार सर्वर से वेबपेज का अनुरोध करने के लिए ब्राउज़र (सफारी 5 / मैक, शायद अन्य भी) बनाता है।
मानव

2
@ मानव अब सफारी 6 / मैक में ऐसा नहीं है।
मार्सेल

2
बूम यह! धन्यवाद: D अब मुझे वह कष्टप्रद त्रुटि दिखाई नहीं देगी, जब तक कि मैं अंत में उस आइकन को बनाने के लिए चारों ओर नहीं पहुंच जाऊंगा।
लियोन गबन

39

आप नहीं कर सकते। आपको बस इतना कर सकते हैं को छोटे से छोटा है कि छवि बनाने के लिए और कुछ कैश अमान्यकरण हेडर सेट करना है ( Expires, Cache-Control) भविष्य में अब तक। यहाँ याहू क्या है! favicon.ico अनुरोधों के बारे में कहना है


7
उन्होंने कहा कि उनके पास फेविकॉन नहीं है। वे इससे बहुत छोटे नहीं हैं। और यह गैर-मौजूद फ़ाइलों को कैश करने के लिए कोई मतलब नहीं है।
इन्ना

16
यदि उसके पास फेविकॉन नहीं है, तो उसे एक बनाना चाहिए, यही मेरी बात थी। इससे बेहतर कोई उपाय नहीं है। क्या यह तर्कसंगत नहीं है? अगर वहाँ, अनुरोधों को रोकने के लिए कोई संभावना नहीं है जब तक कि आप कैशिंग उपयोग करते हैं, आप क्या करते हैं?
इओनु 12: जी। स्टेन स्टेन

5

आप favicon.ico तक पहुँच को अस्वीकार करने के लिए .htaccess या सर्वर के निर्देशों का उपयोग कर सकते हैं, लेकिन सर्वर ब्राउज़र तक पहुँच अस्वीकृत उत्तर भेजेगा और यह अभी भी पृष्ठ की पहुँच को धीमा कर देता है।

जब ब्राउज़र आपकी साइट पर वापस आ जाता है, तो आप ब्राउज़र को अपनी साइट पर वापस आने के लिए favicon.ico का अनुरोध करने से रोक सकते हैं।

सबसे पहले, एक छोटी favicon.ico छवि प्रदान करें, रिक्त हो सकती है, लेकिन जितना संभव हो उतना छोटा। मैंने 200 बाइट्स के तहत एक काले और सफेद को बनाया। फिर, .htaccess या सर्वर निर्देशों का उपयोग करते हुए, फ़ाइल की समय सीमा समाप्त होने पर भविष्य में एक या दो महीने निर्धारित करें। जब वही उपयोगकर्ता आपकी साइट पर वापस आएगा, तो उसे ब्राउज़र कैश से लोड किया जाएगा और कोई अनुरोध आपकी साइट पर नहीं जाएगा। सर्वर लॉग में कोई 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>

तब से एक ही favicon.ico सभी वर्चुअल होस्ट की गई साइटों के लिए काम करेगा क्योंकि आप इसे अलियास कर रहे हैं। यूजर्स के जाने के बाद इसे एक महीने के लिए ब्राउजर कैश से निकाला जाएगा।

.Htaccess के लिए यह काम करने की सूचना है (मेरे द्वारा जाँच नहीं की गई है): -

AddType image/x-icon .ico
ExpiresActive On
ExpiresByType image/x-icon "access plus 1 month"

मॉड्यूल को सक्षम करने के लिए मत भूलना: ~ / etc / apache2 # a2enmod expires && सेवा apache2 पुनरारंभ
Sino Boeckmann

4

एक बहुत ही सरल उपाय आपके नीचे दिए गए कोड को डाल रहा है .htaccess। मेरे पास एक ही मुद्दा था और यह मेरी समस्या को हल करता है।

<IfModule mod_alias.c>
    RedirectMatch 403 favicon.ico
</IfModule>

संदर्भ: http://perishablepress.com/block-favicon-url-404-requests/


यहां से जुड़ा लेख बहुत अच्छा है, लेकिन मेरा मानना ​​है कि प्रतिक्रिया में वाक्य रचना गलत है।
एरिका केन

4

यदि आप nginx का उपयोग करते हैं

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

यह अनुरोध को रोकता नहीं है, लेकिन मैं इसे एक विकल्प के रूप में पसंद करता हूं।
कासिमके

ज़रूर, अगर आप वेब सर्वर को नियंत्रित कर सकते हैं।
जब्बूनी


0

हमारे अनुभव में, अपाचे favicon.ico के अनुरोध पर गिरने के साथ, हमने .htaccess फ़ाइल में अतिरिक्त हेडर के बारे में टिप्पणी की।

उदाहरण के लिए हमने हैडर को एक्स-एक्सएसएस-सुरक्षा "1; मोड = ब्लॉक" सेट किया था

... लेकिन हम a2enmod हेडर को पहले से ही भूल गए थे। अतिरिक्त हेडर को भेजकर हमारे favicon.ico मुद्दे को हल किया जा रहा है।

हमारे पास विकास के लिए कई वर्चुअल होस्ट भी थे, और http: // localhost और fetch /favicon.ico का उपयोग करते समय केवल 500 आंतरिक सर्वर त्रुटि के साथ विफल रहे । यदि आप "कर्ल -v http: //localhost/favicon.ico " चलाते हैं और होस्ट का नाम रिज़ॉल्वर कैश में नहीं है या उस प्रभाव के लिए कुछ के बारे में चेतावनी देते हैं, तो आपको समस्याओं का अनुभव हो सकता है।

यह उतना ही सरल हो सकता है जितना कि हम नहीं ले रहे हैं (हमने कोशिश की और यह काम नहीं किया, क्योंकि हमारा मूल कारण अलग था) या apache2.conf या .htaccess में निर्देशों के लिए चारों ओर देखो जो अजीब 500 आंतरिक सर्वर त्रुटि संदेश का कारण हो सकता है।

हमने पाया कि यह इतनी जल्दी विफल हो गया था कि अपाचे की त्रुटि लॉग में कुछ भी उपयोगी नहीं था और पूरी सुबह यहां छोटी-छोटी चीजों को बदलने में बिताई और जब तक हम अतिरिक्त हेडर सेट करने की समस्या को हल नहीं कर लेते, जब तक कि हम mod_headers लोड करना भूल गए थे!


0

कभी-कभी यह त्रुटि आती है, जब HTML में कुछ टिप्पणी कोड होता है और ब्राउज़र कुछ देखने की कोशिश कर रहा होता है। जैसे मेरे मामले में मैंने फ्लास्क में एक वेब फॉर्म के लिए कोड टिप्पणी की थी और मुझे यह मिल रहा था।

2 घंटे बिताने के बाद मैंने इसे निम्नलिखित तरीकों से तय किया:

1) मैंने एक नया पायथन वातावरण बनाया और फिर उसने टिप्पणी की गई HTML लाइन पर एक त्रुटि की, इससे पहले कि मुझे केवल 'GET /favicon.ico HTTP / 1.1 "404 त्रुटि दी गई थी

2) कभी-कभी, जब मेरे पास एक डुप्लिकेट कोड होता था, जैसे अजगर फ़ाइल उसी नाम से मौजूद होती है, तो मुझे भी यह त्रुटि दिखाई देती है, उन्हें भी हटाने का प्रयास करें


-10

आप उपयोग कर सकते हैं

<link rel="shortcut icon" href="http://localhost/" />

इस तरह यह वास्तव में सर्वर से अनुरोध नहीं किया जाएगा।


1
ऐसा लगता है कि यह कुछ ब्राउज़र को डरावने त्रुटि संदेश फेंकने का कारण बन सकता है - आपको उन पृष्ठों पर उस ट्रिक का उपयोग करने के लिए भी देखना होगा जो HTTPS से अधिक हो सकते हैं।
ब्रिगिड मैकडोनेल

6
के बारे में उपयोग करना: रिक्त बेहतर है।
ल्यूक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.