net::ERR_HTTP2_PROTOCOL_ERROR 200 : mes solutions

net::ERR_HTTP2_PROTOCOL_ERROR 200 : mes solutions  -
Qu'est-ce que c'est que ce net::ERR_HTTP2_PROTOCOL_ERROR

Durant plusieurs semaines j'ai été particulièrement ennuyé par un bug "net::ERR_HTTP2_PROTOCOL_ERROR 200" qui empêchait l'affichage d'images redimentionnées à la volée par PHP. Après de nombreuses solutions inopérentes et un peu de reflexion voici mes solutions qui fonctionnent.

"net::ERR_HTTP2_PROTOCOL_ERROR 200" !WTF!

Dans l'admin d'une application en ligne hébergée chez OVH et suite à une migration, les miniatures de galeries d'images s'affichaient durant 5 secodes puis... disparaissaient !

Les clients se demandaient ce qu'il se passait et moi je prenait pas mal de temps à régler ce problème sans y parvenir...

Le contexte :

Hébergé chez OVH, le serveur avec été migré juste avant que ne se produise. durant mes premier tests, j'ai remaqué que le bug ne se produisait qu'en mode PHP et disparaissait en mode PHPCGI... Absent de Firefox mais présent sur Chrome et autres basés sur Webkit...

Qu'est-ce qui avait changé avec cette migration ? : le protocole http 2.0

Beaucoup plus sécurisé, il permet au navigateur de vérifier plus finement les ressources téléchargés tels que les images, les css, js, etc... afin d'éviter les attaques sournoises.

Les caractéristiques de ces ressources peuvent être transmises via les headers http et certains contrôles seront basés sur ces dernières. Une piste...

Désactivant une à une celles émises par le fichier php de redimentionnement à la volée, je m'aperçu que Content-lenght posait problème. Une fois supprimée plus de bug ! 

Cool mais pas totalement satisfaisant 

Après réflexion, je me suis dit que ce fichier se faisant (en quelque sorte) passé pour une image devait subir une compression (performance web oblige) et que la taille finale pouvait varier de celle envoyée via le header content-lenght.

Je désactive momentanement GZIP à partir du .htaccess et effectivement plus de problème, après un coup de Google, je trouvais cette instruction "SetEnvIfNoCase Request_URI ^/thumb\.php no-gzip dont-vary" à insérer dans le .htaccess. A vous d'adapter cette directive à votre besoin.

La raison était là !

Vous pouvez rencontrer ce type de problème avec toute les ressources statiques servies par un fichier PHP, donc si c'est le cas vérifiez si vous n'êtes pas victime d'un problème similaire au mien et adaptez ma solution à votre application, tout devrait rentrer dans l'ordre.


Partager cet article sur :

Lien permanent vers cet article :

Tags : Développement, Performance web, ,

Commenter et noter cet article

Les commentaires pour cet article