4 votes

Que contient exactement la variable SERVER_PROTOCOL (Apache 2.4) ?

J'ai un site web géré par Apache 2.4 qui doit servir tout le contenu via HTTPS. J'ai déjà mis en place des redirections appropriées qui fonctionnent correctement, mais qui ne détectent aucun cas pathologique. Je voulais améliorer cette situation et, en faisant mes devoirs, je suis tombé sur l'exemple suivant dans le document ce document :

<If "%{SERVER_PROTOCOL} != 'HTTPS'">
    Redirect "/admin/" "https://www.example.com/admin/"
</If>

Je l'ai légèrement modifié pour refléter ma situation :

<If "%{SERVER_PROTOCOL} != 'HTTPS'">
    Redirect "/" "https://www.example.com/"
</If>

Désormais, lorsqu'on essaie d'afficher une URL de mon site, le navigateur entre dans une boucle de redirection infinie.

Je soupçonne que l'exemple est en fait erroné. SERVER_PROTOCOL ne semble pas contenir la valeur HTTPS en toutes circonstances. Au contraire, d'après ce que j'ai lu dans d'autres articles, il contient des choses telles que HTTP/1.1 (comme son nom l'indique).

Donc ma question est : Qu'est-ce que exactement SERVER_PROTOCOL contenir dans quelles circonstances / dans quel contexte ? Et quelle pourrait être la raison pour laquelle le site officiel de documentation d'Apache est le seul que j'ai trouvé au cours de plusieurs heures de recherche qui liste HTTPS comme une valeur possible de SERVER_PROTOCOL ?

1 votes

SERVER_PROTOCOL pourrait être HTTP/1.0 (anciens navigateurs), HTTP/1.1 (le plus courant de nos jours), HTTP/0.9 (lorsqu'ils sont omis par le client, par un logiciel assez ancien ou par des tests manuels) et probablement HTTP/2.0 à un moment donné. Cela ne vous aidera pas dans vos redirections pour https. De même, si vous n'avez pas l'intention d'utiliser le protocole http quelles que soient les circonstances, je rechercherais HSTS.

0 votes

Eh bien, merci beaucoup et +1. Alors la documentation est effectivement erronée (je n'arrive toujours pas à croire que je suis le premier concerné par cette erreur). HSTS était sur mon agenda de toute façon ...

4voto

Michael Hampton Points 232226

Félicitations, vous avez trouvé une erreur dans la documentation d'Apache. Pensez à la signaler.

Pour ce qui est de votre problème immédiat, vous semblez rechercher REQUEST_SCHEME , qui contiendra

La partie schéma de l'URI de la requête

par exemple, http ou https .

0 votes

Merci - accepté comme réponse et +1. Je vais essayer de trouver comment déposer le bug. En ce qui concerne le problème actuel : j'avais déjà trouvé la page que vous avez liée, mais je ne l'ai pas prise au sérieux car je ne pouvais pas croire qu'il y ait une telle erreur dans la documentation. De plus, j'avais déjà essayé d'utiliser la fonction HTTPS variable qui avait conduit à un autre problème. Le même problème se posait lorsque l'on utilisait REQUEST_SCHEME (ceci fait l'objet d'une question distincte) .

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