DNS RobotDNS Propagation Checker
AccueilDNSWHOISIPSSL
DNS RobotDNS Propagation Checker

Boîte à outils DNS nouvelle génération

Politique de ConfidentialitéConditions d'UtilisationÀ ProposBlogContact

Outils DNS

Recherche DNSTest de Vitesse DNSDomaine vers IPRecherche NSRecherche MXVoir tout

Outils E-mail

Vérificateur d'Enregistrement SPFVérificateur DMARCVérificateur DKIMOutil de Test SMTPAnalyseur d'En-têtes E-mailVoir tout

Outils Web

Recherche WHOISVérificateur d'hébergementDisponibilité de DomaineRecherche de Sous-domainesDétecteur de CMSVoir tout

Outils Réseau

Outil PingTracerouteVérificateur de PortsVérification des En-têtes HTTPVérification du Certificat SSLVoir tout

Outils IP

Recherche IPQuelle Est Mon IPVérification de Liste Noire IPIP vers HostnameRecherche ASNVoir tout

Outils Utilitaires

Scanner de QR CodeGénérateur de QR CodeUPI QR Code GeneratorWiFi QR Code GeneratorTraducteur de Code MorseVoir tout
© 2026 DNS Robot. Développé par : ❤ Shaik Brothers
Tous les systèmes opérationnels
Made with
Accueil/Blog/ERR_HTTP2_PROTOCOL_ERROR : signification et solutions

ERR_HTTP2_PROTOCOL_ERROR : signification et solutions

Shaik Vahid30 sept. 20269 min de lecture
Page d'erreur Chrome ERR_HTTP2_PROTOCOL_ERROR à côté des vérifications qui corrigent les erreurs de protocole HTTP/2
Page d'erreur Chrome ERR_HTTP2_PROTOCOL_ERROR à côté des vérifications qui corrigent les erreurs de protocole HTTP/2

Point clé

ERR_HTTP2_PROTOCOL_ERROR (erreur Chromium -337) signifie que le serveur, ou un intermédiaire entre vous et lui, a envoyé une réponse HTTP/2 qui enfreint les règles du protocole : Chrome l'a donc rejetée. Côté visiteur, un rechargement, une fenêtre de navigation privée, l'effacement du cache du site ou la suspension de l'analyse HTTPS de l'antivirus aident généralement, car une réponse altérée ou mise en cache est un déclencheur fréquent. Côté propriétaire du site, les causes habituelles sont une réponse coupée en plein flux (souvent un proxy dont le disque est plein ou le dossier temporaire non accessible en écriture), un Content-Length qui ne correspond pas au corps, ou des en-têtes interdits par HTTP/2. Reproduisez l'erreur avec curl --http2 -v.

Advertisement

Qu'est-ce que ERR_HTTP2_PROTOCOL_ERROR ?

ERR_HTTP2_PROTOCOL_ERROR est une erreur de Chrome et d'Edge qui signifie que le navigateur a reçu une réponse HTTP/2 qui enfreint les règles du protocole. Dans Chromium, il s'agit de l'erreur réseau -337 : « il y a une erreur de protocole HTTP/2 ». Chrome n'a pas de page d'erreur dédiée, vous voyez donc la page générique : « Ce site est inaccessible. La page Web à l'adresse … est peut-être temporairement inaccessible ou a peut-être été déplacée de façon permanente vers une nouvelle adresse Web », avec ERR_HTTP2_PROTOCOL_ERROR en dessous.

HTTP/2 est la version plus rapide de HTTP qu'utilisent aujourd'hui la plupart des sites HTTPS. Elle est plus stricte que HTTP/1.1 : les réponses sont découpées en trames binaires, les en-têtes suivent des règles précises, et la taille annoncée d'une réponse doit correspondre à ce qui arrive réellement. Quand Chrome voit une réponse qui enfreint ces règles, par exemple une réponse qui s'arrête en plein flux ou qui contient un en-tête interdit, il considère toute la réponse comme mal formée et la rejette.

Les développeurs la voient souvent dans la console des DevTools sous la forme net::ERR_HTTP2_PROTOCOL_ERROR 200 (OK). Cette combinaison est un indice fort : le serveur a répondu 200, mais le corps de la réponse n'est jamais arrivé intact.

Note

Firefox et Safari parlent aussi HTTP/2 mais signalent différemment les réponses cassées : une page peut donc échouer dans Chrome et sembler se charger (parfois de façon incomplète) ailleurs. Cela ne veut pas dire que Chrome a tort : c'est généralement lui le plus strict pour rejeter une réponse mal formée.

Ce que HTTP/2 considère comme mal formé

La norme HTTP/2 (RFC 9113) liste les erreurs qui rendent une réponse mal formée, et un flux réinitialisé avant la fin échoue lui aussi. Voici les problèmes à l'origine de la plupart des erreurs rencontrées en pratique :

RègleCe qui l'enfreint
Le Content-Length doit être égal à la taille du corpsUn serveur ou un plugin annonce une taille et en envoie une autre, par exemple quand la sortie est compressée après que la longueur a été définie
La réponse doit se terminer proprementLe serveur, le proxy ou l'application arrête d'envoyer en cours de route
Aucun en-tête propre à la connexionConnection, Keep-Alive, Proxy-Connection, Transfer-Encoding ou Upgrade envoyé dans une réponse HTTP/2
Les noms de champs doivent être en minusculesDes noms d'en-têtes avec des majuscules transmis tels quels en HTTP/2
Des valeurs d'en-têtes validesDes retours à la ligne ou d'autres caractères interdits dans une valeur d'en-tête
Une ligne :status valideUn code de statut absent ou illisible

Advertisement

Quelles sont les causes de ERR_HTTP2_PROTOCOL_ERROR ?

La plupart des cas viennent du serveur, mais quelques éléments de votre propre ordinateur peuvent abîmer une réponse à son arrivée :

  • Côté serveur : réponses coupées en plein flux (un proxy à court d'espace disque ou incapable d'écrire ses fichiers temporaires, une application qui plante pendant l'envoi, un délai dépassé), valeurs de Content-Length erronées, en-têtes interdits ou invalides, et prise en charge de HTTP/2 boguée dans une ancienne configuration de serveur ou de CDN.

  • De votre côté : antivirus ou pare-feu qui inspecte le HTTPS et réécrit les réponses, extensions de navigateur qui modifient les requêtes ou les réponses, copie de la page corrompue dans le cache, et parfois une version obsolète de Chrome.

Solution 1 : rechargement forcé et navigation privée

Appuyez sur Ctrl + Maj + R (Mac : Cmd + Maj + R) pour recharger sans le cache. Une réponse coupée une fois peut très bien passer à la tentative suivante.

Ouvrez ensuite la page dans une fenêtre de navigation privée (Ctrl + Maj + N, sur Mac Cmd + Maj + N). La navigation privée n'a ni cookies ni cache de votre profil habituel, et les extensions y sont désactivées par défaut. Si la page s'y charge, la solution 2 ou la solution 3 réglera le problème dans votre fenêtre normale.

Advertisement

Solution 2 : effacez le cache et les cookies de ce site

Une copie en cache corrompue ou un cookie trop volumineux peut déclencher l'erreur à répétition sur un site. Effacez uniquement les données de ce site : cliquez sur l'icône à gauche de la barre d'adresse → Cookies et données de site (ou Paramètres des sites) → supprimez les données, puis rechargez. Pour un nettoyage plus large, appuyez sur Ctrl + Maj + Suppr et effacez les Images et fichiers en cache des derniers jours.

Solution 3 : suspendez l'analyse HTTPS de l'antivirus et les extensions

Un logiciel de sécurité qui déchiffre et inspecte le HTTPS se place au milieu de chaque connexion HTTP/2. Si sa gestion de HTTP/2 est boguée ou obsolète, il peut transmettre des réponses que Chrome juge mal formées. Désactivez uniquement la fonction d'analyse HTTPS (souvent appelée analyse HTTPS, Agent Web (Web Shield), filtrage des protocoles SSL/TLS ou analyse des connexions chiffrées) et rechargez. Si cela règle le problème, mettez l'antivirus à jour et ajoutez une exclusion pour le site.

Ensuite, désactivez toutes les extensions dans chrome://extensions, rechargez, puis réactivez-les une par une. Les bloqueurs de publicités, les outils de confidentialité et tout ce qui modifie les en-têtes sont les suspects habituels.

Avertissement

Réactivez la protection une fois vos tests terminés. Laisser l'analyse HTTPS désactivée partout pour corriger un seul site est un mauvais compromis : excluez plutôt ce site.

Advertisement

Solution 4 : mettez Chrome à jour et testez d'autres navigateurs

Ouvrez chrome://settings/help pour installer toute mise à jour en attente, puis redémarrez le navigateur. Ouvrez ensuite la même page dans Firefox ou Safari. Si elle échoue partout, le site est cassé et seul son propriétaire peut le corriger. Si seuls Chrome ou Edge échouent, le problème vient quand même généralement du site, car Chrome est le plus strict face au HTTP/2 mal formé, mais les solutions 2 et 3 valent la peine d'être refaites.

Solution 5 : testez la page sans HTTP/2

Chrome peut être lancé avec HTTP/2 désactivé, ce qui vous dit avec certitude si HTTP/2 est en cause. Fermez d'abord toutes les fenêtres de Chrome, puis lancez-le depuis un terminal :

bash
# Windows (invite de commandes)
"C:\Program Files\Google\Chrome\Application\chrome.exe" --disable-http2

# macOS (Terminal)
open -a "Google Chrome" --args --disable-http2

Astuce

S'il s'agit de votre propre site et que vous avez besoin d'un contournement rapide pendant l'enquête, vous pouvez désactiver temporairement HTTP/2 sur le serveur (dans nginx, retirez http2 de la ligne listen 443 ssl ou ajoutez http2 off;). Les navigateurs se rabattent alors sur HTTP/1.1, plus tolérant. Considérez-le comme une étape temporaire, pas comme la solution.

Si la page se charge dans cette fenêtre, les réponses HTTP/2 du site sont mal formées et le propriétaire doit les corriger. Fermez ensuite Chrome et rouvrez-le normalement. L'option ne s'applique qu'à ce lancement.

Advertisement

Pour les propriétaires de sites : corriger les erreurs de protocole HTTP/2

Si des visiteurs sur des réseaux et des navigateurs différents signalent l'erreur, le problème se trouve dans votre infrastructure. Ces trois vérifications les trouvent presque toutes.

1. Reproduisez l'erreur avec curl

bash
# HTTP/2 : surveillez la fin de la sortie
curl -sv --http2 https://example.com/broken-page -o /dev/null
# Un flux cassé se termine par quelque chose comme :
# HTTP/2 stream 1 was not closed cleanly: PROTOCOL_ERROR (err 1)
# (curl 8.19+ : HTTP/2 stream 1 reset by server (error 0x1 PROTOCOL_ERROR))

# Même URL en HTTP/1.1 pour comparer
curl -sv --http1.1 https://example.com/broken-page -o /dev/null

Astuce

Dans les DevTools de Chrome (F12) → Réseau (Network), une requête en échec peut indiquer combien de données ont été reçues avant la coupure. Comparer ce chiffre à la taille annoncée dans l'en-tête content-length de la réponse vous dit vite si vous avez affaire à une réponse tronquée.

Si HTTP/1.1 fonctionne et que HTTP/2 échoue, vous avez confirmé l'erreur. Comparez les en-têtes de réponse entre les deux, et notez combien d'octets arrivent avant que le flux ne casse. L'outil En-têtes HTTP affiche aussi les en-têtes envoyés par votre site, vus depuis l'extérieur de votre réseau.

2. Cherchez les réponses coupées en plein flux

La cause serveur la plus fréquente est une réponse qui commence (statut 200, en-têtes envoyés) puis s'arrête trop tôt. nginx met en mémoire tampon les réponses volumineuses de votre application dans des fichiers temporaires : si le disque est plein ou si nginx ne peut pas écrire dans son dossier temporaire, la réponse s'arrête prématurément et le navigateur signale une erreur de protocole. Vérifiez :

bash
df -h                                   # un disque est-il plein ?
sudo grep -E "No space left|Permission denied" /var/log/nginx/error.log | tail
ls -ld /var/lib/nginx/proxy /var/lib/nginx/fastcgi   # dossiers temporaires Debian/Ubuntu ; le propriétaire doit être l'utilisateur nginx

Vérifiez aussi l'application elle-même : un processus PHP ou Node qui plante, dépasse un délai ou atteint une limite de mémoire pendant l'envoi d'une grosse page ou d'un téléchargement produit le même résultat. Les logs de l'application autour de l'heure de l'erreur le montrent généralement.

3. Corrigez le Content-Length et les en-têtes interdits

  • Content-Length : laissez le serveur le calculer. Ne le définissez pas à la main dans le code de l'application si un plugin, un middleware ou le serveur web compresse ou modifie aussi la sortie, car la longueur annoncée ne correspond alors plus aux octets envoyés. Une longueur définie dans le code PHP alors qu'un plugin ou un réglage PHP compresse aussi la sortie est l'une des façons dont cela arrive sur les sites WordPress.

  • En-têtes propres à la connexion : supprimez le code qui définit Connection, Keep-Alive, Transfer-Encoding ou Upgrade sur les réponses. HTTP/2 les interdit, et si nginx retire la plupart d'entre eux pour vous, certains serveurs d'application et proxys ne le font pas.

  • Valeurs d'en-têtes : assurez-vous qu'aucun en-tête ne contient de saut de ligne ou de caractère de contrôle. Cela vient souvent d'une saisie utilisateur placée dans un en-tête, comme un nom de fichier dans Content-Disposition.

  • CDN placé devant : si vous utilisez Cloudflare ou un autre CDN, testez directement le serveur d'origine (avec curl --resolve ou une entrée dans le fichier hosts) pour savoir si l'erreur vient de l'origine ou du CDN.

Note

Derrière un CDN, le navigateur parle HTTP/2 au CDN, et le CDN peut parler HTTP/1.1 à votre serveur d'origine. Une origine qui envoie un mauvais Content-Length ou ferme trop tôt apparaît quand même au navigateur comme une erreur HTTP/2, car le CDN ne peut transmettre que ce qu'il a reçu.

ERR_HTTP2_PROTOCOL_ERROR et les erreurs similaires

ErreurCodeCe qui s'est passé
ERR_HTTP2_PROTOCOL_ERROR-337Une réponse HTTP/2 a enfreint les règles du protocole
ERR_QUIC_PROTOCOL_ERROR-356Le même type d'échec en HTTP/3 (QUIC)
ERR_SSL_PROTOCOL_ERROR-107La négociation HTTPS (TLS) a échoué avant le démarrage de HTTP/2
ERR_CONNECTION_CLOSED-100La connexion a été fermée avant l'arrivée d'une page
ERR_EMPTY_RESPONSE-324Le serveur n'a rien envoyé du tout

Guides détaillés : ERR_QUIC_PROTOCOL_ERROR, ERR_SSL_PROTOCOL_ERROR, ERR_CONNECTION_CLOSED et ERR_EMPTY_RESPONSE. Pour vérifier le certificat et la configuration HTTPS d'un site depuis l'extérieur, utilisez le Vérificateur SSL.

Voyez les en-têtes que votre site envoie vraiment

Le vérificateur d'en-têtes HTTP de DNS Robot interroge n'importe quelle URL depuis nos serveurs et liste le code de statut et chaque en-tête de réponse, ce qui permet de repérer facilement les en-têtes interdits ou mal formés.

Essayer Vérificateur d'en-têtes HTTP

Advertisement

Questions fréquemment posées

Cela signifie que Chrome a reçu une réponse HTTP/2 qui enfreint les règles du protocole, par exemple une réponse qui s'est arrêtée trop tôt, qui annonçait une mauvaise taille ou qui contenait des en-têtes interdits, et qu'il l'a donc rejetée. Dans Chromium, c'est l'erreur réseau -337.

Outils associés

HTTP Headers CheckSSL Certificate CheckPort Checker

Articles associés

ERR_QUIC_PROTOCOL_ERROR : Signification et Comment le CorrigerERR_SSL_PROTOCOL_ERROR : Comment le Corriger (Chrome, Edge, Tous les Navigateurs)ERR_CONNECTION_CLOSED : signification et solutions

Table des matières

  • Qu'est-ce que ERR_HTTP2_PROTOCOL_ERROR ?
  • Ce que HTTP/2 considère comme mal formé
  • Quelles sont les causes de ERR_HTTP2_PROTOCOL_ERROR ?
  • Solution 1 : rechargement forcé et navigation privée
  • Solution 2 : effacez le cache et les cookies de ce site
  • Solution 3 : suspendez l'analyse HTTPS de l'antivirus et les extensions
  • Solution 4 : mettez Chrome à jour et testez d'autres navigateurs
  • Solution 5 : testez la page sans HTTP/2
  • Pour les propriétaires de sites : corriger les erreurs de protocole HTTP/2
  • 1. Reproduisez l'erreur avec curl
  • 2. Cherchez les réponses coupées en plein flux
  • 3. Corrigez le Content-Length et les en-têtes interdits
  • ERR_HTTP2_PROTOCOL_ERROR et les erreurs similaires
  • Questions fréquemment posées