Redirection 307 et 308


Le standard HTTP 1.1 vient de subir une mise à jour.

Oui, LE standard HTTP 1.1. La fameuse RFC2616, qui n’a pas été touchée depuis l’année de sortie de The Matrix (coïncidence ? Je ne pense pas…).

Bref, qu’est-ce qui change ?

Essentiellement la forme, qui permettra à la RFC de HTTP 2.0 de faire référence à des parties de celle de la HTTP 1.1, maintenant divisée en 8, et évitera de se répéter.

Le web ne va donc pas casser.

Mais il y a quand même intronisation officielle de la redirection 308, qui est à la 301 ce que la 307 est à la 302.

Je me doute que ça vous parle autant qu’un personnage de film de Charlie Chaplin en fond d’écran d’un Windows avec driver realtek.

Pour rappel, quand un serveur HTTP répond à un client, il lui renvoie un code pour indiquer la nature de sa réponse. Quand tout va bien, c’est 200, quand la page n’est pas trouvée, c’est le fameux 404, quand le serveur est en erreur, c’est une 50x, etc.

Quand le serveur renvoie un code 30x, c’est généralement une redirection : on dit au client, ce que tu cherches est ailleurs, et le client, recevant ce code, fait donc une seconde requête, sur la nouvelle adresse.

Le code 301 indique une redirection permanente, ce qui signifie que le client peut considérer que c’est la nouvelle adresse qui remplace l’ancienne, pour toujours.

Le code 302 indique une redirection temporaire, généralement on utilise ça pour orienter le client sur le site à la suite d’une action, comme la saisie d’un formulaire.

Mais ces deux codes ont une particularité : le client effectue une simple requête GET vers la nouvelle adresse. Si vous avez fait une requête complexe avant, par exemple une requête POST avec plein de paramètres, le client va se rediriger avec une nouvelle requête GET basique, toute l’information précédente est perdue.

Cela peut être ce que l’on veut. Mais parfois, on souhaite que le client fasse la redirection avec une copie exacte de la requête initiale.

C’est ce que fait le code 307 : une redirection temporaire, mais avec la même requêtes. C’est comme la 302, donc, mais répète la même requête deux fois.

Le code 308 demande aussi une redirection en répétant la requête, mais une redirection permanente, comme la 301.

C’est ce dernier qui a été ajouté officiellement au protocole, puisqu’il est déjà supporté par la plupart des navigateurs : même IE le comprends depuis 2008.

(le support est vraiment aléatoire, voir comments)

Par curiosité, vous pouvez tester la redirection ici.

9 thoughts on “Redirection 307 et 308

  • Erase

    Aw, snap

    Your browser doesn’t support HTTP/308.

    Eh bim. Internet Explorer > Chromium

    *malôcul*

  • Sam Post author

    Testé sur chrome, pareil. Marrant, IE qui dépasse chrome sur un truc…

    Firefox passe niquel, et Opera se casse les dents également.

    Va falloir que j’édite ma conclusion.

  • Shagshag

    Pas étonnant pour Opera.
    Si vous parlez des versions >= 15 il a le même moteur que Chrome. Celles < 15 non mais elles sont vielles.

    En gros maintenant Opera est à Chrome ce que Maxthon est à Internet Explorer. C'est plus la peine de le tester.

  • Sam Post author

    Opera V 12.16.

    Je ne test pas sur Opéra en général, car la part d’utilisateurs est trop faible. Mais si je le faisais, je le ferais en parallèle à un test avec Chrome car le moteur de rendu n’est pas tout le navigateur.

Comments are closed.

Des questions Python sans rapport avec l'article ? Posez-les sur IndexError.