मैं वर्तमान में एक वेबसाइट पर काम कर रहा हूं, जो net::ERR_HTTP2_PROTOCOL_ERROR 200
Google Chrome पर एक त्रुटि चलाता है । मुझे यकीन नहीं है कि इस त्रुटि को क्या उकसा सकता है, मैंने सिर्फ HTTPS में वेबसाइट एक्सेस करते समय ही इसे पॉप आउट कर दिया था। मैं 100% यकीन नहीं कर सकता कि यह संबंधित है, लेकिन ऐसा लगता है कि यह जावास्क्रिप्ट को ठीक से निष्पादित करने से रोकता है।
उदाहरण के लिए, निम्न परिदृश्य होता है:
मैं HTTPS में वेबसाइट एक्सेस कर रहा हूं
मेरा ट्विटर फ़ीड https://publish.twitter.com के माध्यम से एकीकृत किया गया है
मैं कंसोल में ERR_HTTP2_PROTOCOL_ERROR देख सकता हूं
यदि मैं ट्विटर फ़ीड को लोड करने के लिए कोड निकालता हूं, तो त्रुटि बनी रहती है
यदि मैं वेबसाइट को HTTP में एक्सेस करता हूं, तो ट्विटर फीड दिखाई देता है और त्रुटि गायब हो जाती है
Google Chrome त्रुटि को ट्रिगर करने वाला एकमात्र वेब ब्राउज़र है: यह एज और फ़ायरफ़ॉक्स दोनों पर अच्छा काम करता है। (एनबी: मैंने सफारी के साथ प्रयास किया, और मेरी भी ऐसी ही kcferrordomaincfnetwork 303
त्रुटि है)
मैं सोच रहा था कि क्या यह सर्वर द्वारा दिए गए हेडर से संबंधित हो सकता है क्योंकि त्रुटि में यह '200' उल्लेख है, और 404/500 पेज कुछ भी ट्रिगर नहीं कर रहा है।
बात यह है कि त्रुटि का दस्तावेजीकरण नहीं किया गया है। Google खोज मुझे बहुत कम परिणाम देता है। इसके अलावा, मैंने देखा कि यह बहुत हाल के Google Chrome रिलीज़ पर दिखाई देता है; त्रुटि v.64.X पर पॉप नहीं होती है, लेकिन यह v.75 + (OS की परवाह किए बिना; मैं मैक थियो पर काम कर रहा हूं) पर करता हूं।
इस बिंदु पर किसी भी जाँच पड़ताल की ख़ुशी ख़ुशी होगी!
अग्रिम में धन्यवाद।
ट्रिस्टन
संपादित करें 1: फ़ायरफ़ॉक्स पर वेबसाइट ओके से संबंधित हो सकती है लेकिन सफारी पर नहीं (kCFErrorDomainCFNetwork त्रुटि 303) न तो क्रोम (शुद्ध :: ERR_SPDY_PROTOCOL_ERROR)
संपादित करें 2: आगे की जांच से पता निम्नलिखित हैं:
- यदि सर्वर 2XX के बजाय 404 देता है, तो त्रुटि ठीक उसी पृष्ठ पर पॉप नहीं होती है
- त्रुटि HTTPS प्रमाणपत्र के साथ स्थानीय पर पॉप नहीं होती है
- एक अलग सर्वर पर त्रुटि पॉप (दोनों OVH के हैं), जो एक अलग प्रमाणपत्र का उपयोग करता है
- त्रुटि कोई फर्क नहीं पड़ता कि PHP संस्करण का क्या उपयोग किया जाता है, 5.6 से 7.3 तक (फ्रेमवर्क का उपयोग किया गया: Cakephp 2.10)
संपादित करें 3: जैसा कि अनुरोध किया गया है, नीचे असफल रीसोर्स के लिए दिया गया हेडर है, जो पूरे वेब पेज पर है। भले ही त्रुटि HTTP हेडर 200 वाले प्रत्येक पृष्ठ पर ट्रिगर हो रही हो, वे पृष्ठ हमेशा क्लाइंट के ब्राउज़र पर लोड हो रहे होते हैं, लेकिन कभी-कभी एक तत्व गायब होता है (मेरी छूट में, बाहरी ट्विटर फ़ीड)। नेटवर्क टैब पर हर दूसरी संपत्ति में एक सफलता वापसी होती है, पूरे दस्तावेज को छोड़कर।
Google Chrome शीर्षलेख (त्रुटि के साथ):
फ़ायरफ़ॉक्स हेडर (त्रुटि के बिना):
curl --head --http2
कंसोल में एक अनुरोध निम्न सफलता देता है:
HTTP/2 200
date: Fri, 04 Oct 2019 08:04:51 GMT
content-type: text/html; charset=UTF-8
content-length: 127089
set-cookie: SERVERID31396=2341116; path=/; max-age=900
server: Apache
x-powered-by: PHP/7.2
set-cookie: xxxxx=0919c5563fc87d601ab99e2f85d4217d; expires=Fri, 04-Oct-2019 12:04:51 GMT; Max-Age=14400; path=/; secure; HttpOnly
vary: Accept-Encoding
संपादित करें 4: क्रोम के साथ गहराई तक जाने की कोशिश: // नेट-एक्सपोर्ट / और https://netlog-viewer.appspot.com टूल बता रहे हैं कि अनुरोध RST_STREAM के साथ समाप्त होता है:
t=123354 [st=5170] HTTP2_SESSION_RECV_RST_STREAM
--> error_code = "2 (INTERNAL_ERROR)"
--> stream_id = 1
इस अन्य पोस्ट में मैंने जो पढ़ा , उसके लिए " HTTP / 2 में, यदि क्लाइंट अनुरोध को निरस्त करना चाहता है, तो वह RST_STREAM भेजता है। जब सर्वर को RST_STREAM प्राप्त होता है, तो वह क्लाइंट को DATA फ्रेम भेजना बंद कर देगा, जिससे प्रतिक्रिया रुक जाएगी। (या डाउनलोड)। कनेक्शन अभी भी अन्य अनुरोधों के लिए उपयोग करने योग्य है, और अनुरोध / प्रतिक्रियाएं जो कि समाप्त हो गई हैं, के साथ समवर्ती थीं, प्रगति जारी रख सकती है। [...] यह संभव है कि जब तक RST_STREAM यात्रा करता है। सर्वर के लिए क्लाइंट, अनुरोध की पूरी सामग्री पारगमन में है और ग्राहक के पास पहुंच जाएगी, जो इसे छोड़ देगा। हालांकि, बड़ी प्रतिक्रिया सामग्री के लिए, RST_STREAM भेजने से सर्वर से पहले आने का एक अच्छा मौका हो सकता है। प्रतिक्रिया सामग्री भेजी जाती है, और इसलिए बैंडविड्थ की बचत होगी। "
वर्णित व्यवहार वही है जो मैं देख सकता हूं। लेकिन इसका मतलब यह होगा कि ब्राउज़र अपराधी है, और फिर मुझे समझ में नहीं आता कि दो समान पृष्ठों पर ऐसा क्यों होता है जिसमें एक 200 हेडर और दूसरा 404 (वही अगर मैं JS को अक्षम करता हूं)।