web-dev-qa-db-fra.com

Quelles sont les conséquences de l'utilisation des en-têtes d'emplacement relatif?

Selon la spécification , en-têtes d'emplacement utilisés dans une redirection requis un nom de serveur

HTTP/1.1 301 Moved Permanently
...
Location: http://example.com/foo/baz/bar

Cependant, en 2012, la plupart des navigateurs Web reconnaîtront un chemin relatif et vous redirigeront vers le nouvel emplacement en utilisant le nom du serveur d'origine.

HTTP/1.1 301 Moved Permanently
...
Location: /foo/baz/bar

L'utilisation des URL relatives dans les en-têtes d'emplacement a-t-elle des conséquences négatives/surprenantes? Ce qui me préoccupe particulièrement, c'est la façon dont Google/les moteurs de recherche vont interpréter cela, mais s'il y a autre chose à quoi je ne pense pas, j'aimerais l'entendre.

17
Alan Storm

Selon la version actuelle de la norme HTTP/1.1, RFC 2616, la valeur de l'en-tête Locationdoit être une adresse URI absolue .

Cependant, dans le projet de norme préparé par le HTTPbis Working Group pour éventuellement remplacer le RFC 2616, cela a été modifié pour permettre également les adresses URI relatives, apparemment parce que :

"La définition de l'en-tête Location [dans le document RFC 2616] diffère de différentes manières: au moins, les navigateurs Web doivent les gérer pour pouvoir interagir avec le contenu sur le Web"

En pratique, autant que je sache, presque tous les principaux navigateurs et moteurs de recherche comprennent et acceptent les redirections HTTP vers les URL relatives. Cependant, jusqu'à ce que le projet HTTPbis devienne un jour la norme officielle et soit largement adopté, il y aura toujours des agents utilisateurs nouveaux ou obscurs qui implémenteront la norme actuelle à la lettre et n'accepteront que les URL absolues. Ainsi, la chose sûre à faire est, pour l'instant, de n'utiliser que des URL absolues dans les en-têtes Location, comme suggéré par Loi de Postel :

"Soyez conservateur dans ce que vous envoyez, libéral dans ce que vous acceptez."

15
Ilmari Karonen

La section 14.30 de la RFC HTTP 1.1 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14. n'est pas très différente. Je ne sais pas si vous allez voir des limitations pratiques pour cela.

La seule fois où j'ai même vu un avertissement à propos de ce problème, c'est quand j'avais l'habitude de tester dans Lynx et que l'emplacement n'était pas absolu, cela vous avertirait "La valeur de l'emplacement n'est pas absolue" - mais si je me souviens bien, cela vous laisserait toujours partir. au nouvel emplacement. Je viens de tester Lynx 2.8.7 et il semble que cela ne se fasse plus, bien que cela puisse être un problème de configuration.

Maintenant, vous dites:

Ce qui me préoccupe particulièrement, c'est la façon dont Google/les moteurs de recherche vont interpréter cela, mais s'il y a autre chose à quoi je ne pense pas, j'aimerais l'entendre.

Je crois que cela mérite un test. Je mettrais en place une URL, la placerais dans le fichier XML de votre site sitemap , et laisserais cette URL être une redirection comme vous le décrivez. Je pense que la chose à faire est de vérifier avec Google Webmaster Tools et de voir s’il ya des conséquences négatives.

6
artlung