Journal Redirections HTTP

Posté par  .
Étiquettes : aucune
0
26
sept.
2003
Il est clair qu'il faut mettre les choses au point concernant les redirections HTTP car c'est le reigne du grand n'importe quoi sur le web, et comme d'habitude ce serait pas mal que les amateurs du libre et du respect des standards montrent le bon exemple. Le fait qui m'a décidé à pondre ce journal est que DLFP utilise actuellement une de ces solutions anti-standards et anti-navigation sur sa homepage, ainsi que le site de l'APRIL.

Je parle des cas où on veut qu'une URL renvoit sur une autre URL. Il faut en finir avec cette horreur de «<meta http-equiv="Refresh" content=... » !!!
D'ailleurs l'excellent navigateur dillo affiche un joli message d'avertissement quand il tombe sur une ineptie de ce genre. Il ne faut pas l'utiliser car :
1) la meta http-equiv sert à passer des en-têtes HTTP supplémentaires, or l'en-tête «Refresh:» n'existe pas, cf http://www.w3.org/Protocols/rfc2616/rfc2616.html(...)
2) ça casse la navigation, en effet quand on va sur la "page précédente" avec son navigateur on peut se retrouver sur la page temporaire, ce qui n'était pas du tout l'effet voulu
3) on ne peut pas donner de précisions au navigateur sur la nature de cette redirection, alors que c'est possible avec l'erreur 3xx de HTTP
4) ça fausse l'en-tête «Referer:»
Il y a encore probablement d'autres désagréments auxquels je n'ai pas pensé.

Alors comment faire ça proprement ? Il suffit d'utiliser l'en-tête HTTP «Location:» dans le flux renvoyé par le serveur. Il faut donc utiliser un script côté serveur. En PHP c'est trivial :
<?php header("Location: http://foo.bar/nouvelle_page.html(...)"); ?>
Je suppose que c'est tout aussi facile dans d'autres langages.

Pour ceux qui ne seraient pas encore convaincus, je vous renvoie au petit article du w3c sur ce sujet, http://www.w3.org/2001/06tips/reback(...) et à l'utilisation correcte des balises meta http-equiv : http://www.w3.org/TR/html4/struct/global.html#h-7.4.4.2(...) .
  • # Re: Redirections HTTP

    Posté par  (site web personnel) . Évalué à 2.

    Et comment tu fais pour mettre un message signalant aux gens que cette url n'existera bientot plus ou pour leur expliquer pourquoi ils vont etre redirigés ?
    • [^] # Re: Redirections HTTP

      Posté par  (site web personnel) . Évalué à 5.

      Il l'a dit, en envoyant un code 3xx
      c'est marqué ds http://www.w3.org/2001/06tips/reback(...)
    • [^] # Re: Redirections HTTP

      Posté par  . Évalué à 4.

      Et comment tu fais pour mettre un message signalant aux gens que cette url n'existera bientot plus ou pour leur expliquer pourquoi ils vont etre redirigés ?
      Tu mets juste un lien, nul besoin de redirection automatique.
      Il suffir de faire une digression de cas pour démontrer que ceci est forcément inutile :
      - soit la personne a la page qui s'affiche sous ses yeux au moment où elle se charge, et alors elle peut cliquer sur le lien, cela lui laisse le temps qu'elle veut pour lire l'avertissement et non un délai imposé par le "webmaster"
      - soit la page ne se charge pas sous ses yeux (la page s'ouvre dans un tab cachée par exemple) et la personne ne voit pas la page intermédiaire; à ce moment là autant faire une vraie redirection
  • # Re: Redirections HTTP

    Posté par  (site web personnel) . Évalué à -1.

    > 1) la meta http-equiv sert à passer des en-têtes HTTP supplémentaires, or l'en-tête «Refresh:» n'existe pas, cf http://www.w3.org/Protocols/rfc2616/rfc2616.html(...(...))

    Quel rapport entre la RFC du protocol HTTP et la balise HTML META ?

    > 3) on ne peut pas donner de précisions au navigateur sur la nature de cette redirection, alors que c'est possible avec l'erreur 3xx de HTTP

    Qu'est ce qu'il en a faire le navigateur ? entre un 301 et un 302, pour lui quelle différence ?

    > 4) ça fausse l'en-tête «Referer:»

    Quelle belle m**** l'invention de cette entête, au début, elle était sympa, mais plus ça va, plus certains l'usent à mauvais escient ( suffit de regarder les pages de stats de linuxfr ces derniers mois ).

    > Alors comment faire ça proprement ? Il suffit d'utiliser l'en-tête HTTP «Location:» dans le flux renvoyé par le serveur. Il faut donc utiliser un script côté serveur.

    Ah ouais, et comment tu fais pour afficher un message genre celui de linuxfr sur les brevets, avec ton système ?

    Je trouve le META ... plus sympa qu'une sal****** de javascript qui redirige au bout d'un certain temps.
    • [^] # Re: Redirections HTTP

      Posté par  . Évalué à 2.

      Quel rapport entre la RFC du protocol HTTP et la balise HTML META ?
      Je ne parle pas de la balise meta mais de la balise meta ayant pour attribut http-equiv (relis ce que j'ai écris). Quant au rapport, il est expliqué dans le dernier lien que j'ai donné.

      Qu'est ce qu'il en a faire le navigateur ? entre un 301 et un 302, pour lui quelle différence ?
      cf http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3(...)

      Quelle belle m**** l'invention de cette entête, au début, elle était sympa, mais plus ça va, plus certains l'usent à mauvais escient ( suffit de regarder les pages de stats de linuxfr ces derniers mois ).
      Quelle belle m**** l'invention de l'ordinateur, au début, elle était sympa, mais plus ça va, plus certains l'usent à mauvais escient (suffit de regarder les abus de monopole de microsoft, les projets TCPA et Palladium, etc).
      Il y a tout un tas d'inventions supers qui sont de temps à autres détournées de leur utilisation originale pour faire chier le monde, c'est pas pour autant qu'il faut les boycotter.

      Ah ouais, et comment tu fais pour afficher un message genre celui de linuxfr sur les brevets, avec ton système ?
      On met le lien mais on ne fait pas de redirection automatique. Cf ma réponse plus haut.

      Je trouve le META ... plus sympa qu'une sal****** de javascript qui redirige au bout d'un certain temps.
      Les deux sont aussi mals.
  • # Re: Redirections HTTP

    Posté par  . Évalué à 1.

    Et comment tu fait si t'as pas de language de script, ni acces a la config du serveur ?
    • [^] # Re: Redirections HTTP

      Posté par  . Évalué à 1.

      AMHA le moins pire ce serait d'utiliser http-equiv mais avec Location et pas Refresh...
      • [^] # Re: Redirections HTTP

        Posté par  (site web personnel) . Évalué à 1.

        Sauf que l'entete "Location" n'a cette signification de redirection *que* si elle est envoyée avec un code de retour en 3xx.
        PHP change tout seul le code de retour quand tu envoies cette entete mais si tu la met en http-equiv ca ne va pas du tout du tout marcher (et si par hasard ca marche c'est pas plus propre que le refresh, au contraire).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.