Μετάβαση στο περιεχόμενο
Web & Dev Εργαλεία 5 λεπτά ανάγνωση Ενημερώθηκε

ERR_HTTP2_PROTOCOL_ERROR: Τι Σημαίνει και Πώς Διορθώνεται

Η σύνδεση HTTP/2 κόπηκε στη μέση: σφάλμα ή timeout της εφαρμογής, γεμάτος δίσκος, μη έγκυρα headers, CDN/proxy. Πώς το εντοπίζεις, και τι είναι το ERR_QUIC_PROTOCOL_ERROR (HTTP/3).

Σε αυτή τη σελίδα

ERR_HTTP2_PROTOCOL_ERROR: Τι σημαίνει

Το HTTP/2 είναι ο σύγχρονος τρόπος με τον οποίο browser και server ανταλλάσσουν σελίδες μέσω https: πολλά αρχεία ταξιδεύουν μαζί, το καθένα στο δικό του «κανάλι» (stream), μέσα στην ίδια σύνδεση. Οι κανόνες του είναι αυστηροί. Αν ένα κανάλι κλείσει απότομα πριν τελειώσει η απάντηση ή φτάσει κάτι που οι κανόνες δεν επιτρέπουν, ο Chrome σταματά με ERR_HTTP2_PROTOCOL_ERROR.

Σκέψου ένα δέμα που φτάνει μισό ή με λάθος ετικέτα: ο browser δεν το δέχεται. Το σφάλμα μπορεί να αφορά ολόκληρη τη σελίδα ή μόνο ένα αρχείο της. Στη δεύτερη περίπτωση η σελίδα ανοίγει «μισή» (χωρίς εικόνες, εμφάνιση ή κάποια λειτουργία) και ο κωδικός net::ERR_HTTP2_PROTOCOL_ERROR φαίνεται μόνο στην κονσόλα του browser (F12).

Πώς εμφανίζεται σε Chrome, Edge, Firefox και Safari

BrowserΤι γράφει η σελίδαΚωδικός
ChromeΑν χαλάσει όλη η σελίδα: «Δεν είναι δυνατή η πρόσβαση σε αυτόν τον ιστότοπο» με το γενικό μήνυμα «Η ιστοσελίδα στη διεύθυνση X μπορεί να βρίσκεται προσωρινά εκτός λειτουργίας ή ίσως έχει μεταφερθεί μόνιμα σε νέα διεύθυνση ιστού.» Αν χαλάσει ένα αρχείο: μισή σελίδα, με τον κωδικό στην κονσόλα (F12).ERR_HTTP2_PROTOCOL_ERROR (HTTP/2) ή ERR_QUIC_PROTOCOL_ERROR (HTTP/3)
EdgeΊδιοι κωδικοί με τον Chrome (το Edge βασίζεται στο Chromium), με δική του διατύπωση στη σελίδαERR_HTTP2_PROTOCOL_ERROR
FirefoxΔεν έχει ακριβές αντίστοιχο. Συνήθως βλέπεις «Σφάλμα πρωτοκόλλου δικτύου», «Η σύνδεση διακόπηκε» ή απλώς μισοφορτωμένη σελίδα.—
SafariΔεν δείχνει αντίστοιχο κωδικό· συνήθως η σελίδα δεν ανοίγει ή ανοίγει μισή.—

Αν είσαι επισκέπτης

  1. Ανανέωσε τη σελίδα, και με Ctrl+F5 (Cmd+Shift+R σε Mac) για να παρακάμψεις την cache. Αν ήταν στιγμιαίο πρόβλημα του server, μπορεί να περάσει.
  2. Δοκίμασε ιδιωτικό παράθυρο. Αν εκεί ανοίγει, φταίει μια επέκταση (ad blocker, επέκταση VPN) ή παλιά cache και cookies. Απενεργοποίησε τις επεκτάσεις μία μία και καθάρισε cache και cookies για το site.
  3. Απενεργοποίησε προσωρινά τη «σάρωση HTTPS» του antivirus. Ορισμένα antivirus «ανοίγουν» την κίνηση https για έλεγχο και μπορεί να χαλάσουν τη σύνδεση HTTP/2.
  4. Δοκίμασε άλλο browser ή άλλο δίκτυο (π.χ. δεδομένα κινητού). Αν βγαίνει παντού, φταίει το site: στείλε στον ιδιοκτήτη τη διεύθυνση της σελίδας και την ώρα που το είδες.

Αν είσαι ο ιδιοκτήτης: οι συνηθισμένες αιτίες

  1. Η εφαρμογή «σκάει» ή αργεί στη μέση της απάντησης. Ένα fatal error της PHP, το όριο χρόνου (max_execution_time) ή εξάντληση μνήμης, αφού έχουν ήδη σταλεί τα πρώτα bytes, κόβει την απάντηση. Στο HTTP/1.1 αυτό συχνά περνά ως απλώς μισή σελίδα· στο HTTP/2 ο Chrome το δείχνει ως σφάλμα.
  2. Γεμάτος δίσκος ή φάκελος προσωρινών αρχείων. Ο web server ή ο proxy γράφει μεγάλες απαντήσεις προσωρινά στον δίσκο· αν δεν χωρούν, η απάντηση κόβεται. Έλεγξε τον ελεύθερο χώρο και τα inodes.
  3. Όρια buffer ή timeouts σε proxy ή CDN. Ένας reverse proxy ή CDN μπροστά από τον server μπορεί να κόβει απαντήσεις που αργούν ή είναι πολύ μεγάλες. Σύγκρινε τα όριά του με τον χρόνο και το μέγεθος της σελίδας.
  4. Headers που το HTTP/2 δεν δέχεται. Headers που αφορούν μόνο το HTTP/1.1, όπως Connection, Upgrade ή Transfer-Encoding, δεν επιτρέπονται στο HTTP/2. Το ίδιο ισχύει για υπερβολικά μεγάλα headers ή cookies και για τιμές με μη έγκυρους χαρακτήρες (π.χ. αλλαγή γραμμής). Συνήθως τα προσθέτει η εφαρμογή ή κάποιο plugin.
  5. Λάθος Content-Length ή διπλή συμπίεση. Αν η εφαρμογή δηλώνει Content-Length που δεν ταιριάζει με όσα στέλνει (συχνά όταν συμπιέζουν και η εφαρμογή και ο server), ο browser απορρίπτει την απάντηση. Κράτα τη συμπίεση σε ένα μόνο σημείο.
  6. WAF ή ModSecurity που διακόπτει την απάντηση. Ένα firewall εφαρμογών μπορεί να κόψει τη σύνδεση στη μέση αντί να στείλει καθαρή σελίδα σφάλματος. Δες τα logs του για την ίδια ώρα.

Πώς το εντοπίζεις

  1. Κοίτα τα logs την ακριβή ώρα. Σημείωσε τη διεύθυνση και την ώρα του σφάλματος και άνοιξε το error log του server και της εφαρμογής για εκείνο το λεπτό.
  2. Σύγκρινε HTTP/2 με HTTP/1.1. Από τερματικό τρέξε curl -sv --http2 -o /dev/null https://etairia.gr/ και μετά curl -sv --http1.1 -o /dev/null https://etairia.gr/, με τη διεύθυνση της σελίδας που χαλάει (στα Windows γράψε NUL αντί για /dev/null). Αν το HTTP/2 αποτυγχάνει (π.χ. «HTTP/2 stream 1 was not closed cleanly») ενώ το HTTP/1.1 ολοκληρώνεται, ψάξε σε headers, proxy και όρια μεγέθους. Αν κόβονται και τα δύο, το πρόβλημα είναι στην εφαρμογή.
  3. Παράκαμψε το CDN. Αν υπάρχει CDN, δοκίμασε προσωρινά απευθείας τον server για να δεις αν το σφάλμα έρχεται από εκεί.

ERR_QUIC_PROTOCOL_ERROR: το ίδιο στο HTTP/3

Το HTTP/3 είναι η νεότερη έκδοση: αντί για TCP χρησιμοποιεί το QUIC, πάνω από UDP στη θύρα 443. Ένα site το «διαφημίζει» με το header Alt-Svc ή με εγγραφή DNS τύπου HTTPS, και ο browser το δοκιμάζει. Κανονικά, αν το UDP είναι κλειστό, ο browser γυρίζει μόνος του στο HTTP/2. Το ERR_QUIC_PROTOCOL_ERROR εμφανίζεται συνήθως όταν η σύνδεση QUIC ξεκινήσει αλλά κάτι στη διαδρομή τη χαλάσει: εταιρικό firewall, antivirus ή router που χειρίζεται άσχημα το UDP.

  • Επισκέπτης: δοκίμασε άλλο δίκτυο. Αν βγαίνει μόνο στο δίκτυο της δουλειάς, ενημέρωσε τον διαχειριστή του. Ως προσωρινή λύση στον Chrome, άνοιξε chrome://flags/#enable-quic, βάλε το «Experimental QUIC protocol» σε Disabled και κάνε επανεκκίνηση του browser· θα χρησιμοποιεί HTTP/2.
  • Ιδιοκτήτης: αν διαφημίζεις HTTP/3, βεβαιώσου ότι η θύρα UDP 443 είναι ανοιχτή στο firewall του server. Αν δεν μπορείς να το υποστηρίξεις σωστά, σταμάτα να το διαφημίζεις (αφαίρεσε το Alt-Svc και το h3 από την εγγραφή DNS HTTPS ή κλείσε την επιλογή HTTP/3 στο CDN). Το site θα λειτουργεί κανονικά με HTTP/2.

Δες ποια «στρώματα» έχει μπροστά το site σου

Το Έλεγχος Security Headers δείχνει ποια έκδοση HTTP διαπραγματεύεται ο server (π.χ. HTTP/2), αν διαφημίζει HTTP/3 (μέσω Alt-Svc ή εγγραφής DNS HTTPS), ποια CDN, proxy ή cache βρίσκονται μπροστά του (Cloudflare, LiteSpeed, Varnish κ.ά.) και όλα τα headers της απάντησης, ώστε να βρεις ποιο στρώμα ευθύνεται. Το Έλεγχος Uptime δείχνει αν η διεύθυνση απαντά από έξω και με ποιον κωδικό.

→ Έλεγχος Security Headers → Έλεγχος Uptime

Περισσότερα: σφάλματα 5xx, ERR_CONNECTION_RESET, το site μου δεν ανοίγει και οδηγός για τα security headers.

Συνηθισμένα λάθη

  • Να κλείνεις το HTTP/2 στον server ως «λύση»: συνήθως κρύβει το πραγματικό πρόβλημα (κομμένη απάντηση), που θα συνεχίσει να χαλάει σελίδες.
  • Να ψάχνεις μόνο στον browser σου, ενώ το σφάλμα βγαίνει σε όλους τους επισκέπτες.
  • Να μην κοιτάς τα logs την ακριβή ώρα του σφάλματος.
  • Να ξεχνάς ότι υπάρχει CDN ή proxy στη μέση: το σφάλμα μπορεί να προέρχεται από εκεί και όχι από τον server σου.

Συχνές Ερωτήσεις

Φταίει ο browser μου ή το site;
Αν το σφάλμα βγαίνει και σε ιδιωτικό παράθυρο, σε άλλο browser και σε άλλο δίκτυο, φταίει το site. Αν φεύγει, φταίει μια επέκταση, η cache ή το antivirus σου.
Γιατί η σελίδα ανοίγει μισή;
Το σφάλμα αφορά ένα μόνο αρχείο της σελίδας (εικόνα, στυλ ή script). Η σελίδα φορτώνει χωρίς αυτό και ο κωδικός φαίνεται στην κονσόλα του browser (F12).
Τι διαφορά έχει το ERR_QUIC_PROTOCOL_ERROR;
Είναι το αντίστοιχο σφάλμα για το HTTP/3, που ταξιδεύει πάνω από UDP. Συνήθως φταίει firewall, antivirus ή router που χαλάει το UDP στη διαδρομή.
Να απενεργοποιήσω το HTTP/2 στον server;
Όχι ως πρώτη λύση. Βρες πρώτα στα logs γιατί κόβεται η απάντηση· διαφορετικά το πρόβλημα απλώς κρύβεται.

Δοκιμάστε αμέσως

Σχετικοί οδηγοί

Αναφορά σφάλματος