1 votes

Comment puis-je arrêter Caddy de mettre en minuscule la première lettre de son en-tête?

J'utilise Caddy en tant que serveur proxy sur mon VPS,

et voici ma configuration Caddyfile:

https://api.yuhenabc.com {
    gzip
    tls /etc/ssl/caddy/chained.crt /etc/ssl/caddy/private.key
    proxy / 127.0.0.1:5000 {
        header_downstream -Server
    }
}

la configuration est normale, vous pouvez utiliser aussi d'autres configurations,

le problème est que l'en-tête après le proxy est en "minuscule",

par exemple "Content-Type" ==> "content-type"

Donc, y a-t-il un moyen d'empêcher Caddy de mettre la première lettre en minuscule?

utilisez curl pour voir la différence:

~ curl -I https://agent.yuhenabc.com/
HTTP/2 200 
accept-ranges: bytes
content-type: text/html
date: Sun, 04 Aug 2019 01:55:34 GMT
etag: "2d-573507058d0c0"
last-modified: Mon, 13 Aug 2018 12:43:23 GMT
server: Caddy
content-length: 45

original:

~ curl -I http://127.0.0.1:5000               
HTTP/1.1 200 OK
Date: Sun, 04 Aug 2019 02:19:06 GMT
Server: Apache/2.4.34 (Unix) LibreSSL/2.5.5 PHP/7.1.23
Last-Modified: Mon, 13 Aug 2018 12:43:23 GMT
ETag: "2d-573507058d0c0"
Accept-Ranges: bytes
Content-Length: 45
Content-Type: text/html

0voto

James Mertz Points 390

C'est normal.

Dans HTTP/1.x, les noms d'en-tête sont insensibles à la casse. Les applications sont tenues d'accepter Content-Type, content-type, et même CoNtEnT-tYpE en tant qu'en-têtes identiques.

RFC 7230: 3.2. Champs d'en-tête

Chaque champ d'en-tête se compose d'un nom de champ insensible à la casse suivi d'un deux-points (":"), de blancs facultatifs en début, de la valeur du champ, et de blancs facultatifs en fin.

Il en va de même en HTTP/2, mais en plus les en-têtes sont toujours envoyés en minuscules conformément à la spécification. Étant donné que cURL et Caddy prennent en charge tous deux HTTP/2 et l'utilisent chaque fois que possible, vous verrez toujours des en-têtes en minuscules - tout autre chose violerait les recommandations du protocole.

RFC 7540: 8.1.2. Champs d'en-tête HTTP

Tout comme en HTTP/1.x, les noms de champs d'en-tête sont des chaînes de caractères ASCII qui sont comparées de manière insensible à la casse. Cependant, les noms de champs d'en-tête DOIVENT être convertis en minuscules avant leur encodage en HTTP/2. Une requête ou une réponse contenant des noms de champs d'en-tête en majuscules DOIT être traitée comme mal formée.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X