web-dev-qa-db-fra.com

Chrome ne charge pas le contenu statique en raison de HTTP2_SESSION_RECV_INVALID_HEADER - Caractère non valide dans le nom de l'en-tête - modifié en dernier

    HTTP2_SESSION_RECV_INVALID_HEADER
--> error = "Invalid character in header name."
--> header_name = "last-modified:"
--> header_value = "Thursday,%2009-Aug-2018%2001:21:53%20GMT"

Ce message d'erreur empêche l'affichage de contenu statique dans Chrome.

2
Michael C

Le problème s’est révélé être les deux points dans header_name = "last modified:" Le fichier de configuration ngnix comportait essentiellement deux points, ce qui amène Chrome à générer une erreur (Firefox, en revanche, ignore cela et rend la page). Le nom de l'en-tête devrait simplement être header_name = "last-modified"

2
Michael C

Malgré le fait que la description de l'erreur indique que le problème se trouve dans le "nom de l'en-tête", je soupçonne que le problème concerne réellement l'en-tête_valeur.

Sur StackOverflow, Le format de date/heure utilisé dans les en-têtes HTTP indique

Dans section 14.29 Last-Modified vous pouvez voir que le format de date doit être:

"Last-Modified" ":" HTTP-date

Un exemple de son utilisation est

Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT

La dernière date modifiée dans votre erreur ne ressemble pas à ça. Il n'y a pas d'espaces. Au lieu de cela, ils ont été remplacés par %20 qui indique que la date a été RL encodée .

Je ne connais aucune raison pour laquelle les en-têtes HTTP standard devraient être codés de cette manière. Voir sur StackOverflow: Est-il approprié ou nécessaire d'utiliser le codage en pourcentage avec les en-têtes HTTP? Je ne suis pas sûr de savoir comment vous auriez configuré votre serveur pour coder en pourcentage le dernier en-tête modifié. Quoi que vous ayez fait, la solution à votre problème devrait être de supprimer ce codage.

Chrome rencontre probablement le premier % et dit "Je ne m'attendais pas à un pour cent! Caractère non valide."

1