2010-12-08 54 views
2

Je souhaite recevoir des demandes pour le sous-domaine www ou pour d'autres domaines de premier niveau redirigés vers une URL canonique.Prise en charge des URI relatives au schéma dans les redirections HTTP 301

Pour éviter HTTP/problèmes HTTPS, je me suis le plus simple serait d'envoyer juste un URI schéma-relatif dans l'en-tête d'emplacement, comme ceci:

HTTP/1.1 301 Moved Permanently 
Location: //example.com/ 

Cela semble fonctionner correctement dans les navigateurs, mais le jouet »validateur« à http://no-www.org/ ne le gère pas correctement. Est-ce juste un script mal écrit, ou ce comportement est-il plus commun dans les scripts, les crawlers, etc.?

+0

[Les adresses URI relatives sont désormais autorisées dans les redirections] (http://stackoverflow.com/a/25643550/545127), vous pouvez donc vous attendre à ce que cela fonctionne dans tous les futurs navigateurs. – Raedwald

+0

Merci pour le heads-up! – klickverbot

Répondre

3

Location attend une URI absolue:

[...] La valeur du champ se compose d'un seul URI absolu.

Location  = "Location" ":" absoluteURI 

Bien que la plupart des fureteurs également accepter URIs relative, vous devez tenir à la spécification et fournir une URI absolue.

+0

Oh, merci, j'ai totalement raté cette partie «absolue» - je supposais juste que toute URL devrait fonctionner puisque tous les UA testés se comportaient comme prévu ... – klickverbot

+0

@klickverbot: La règle générale est: * Soyez tolérant avec l'entrée mais soyez strict avec la sortie. * – Gumbo

+6

C'est un bug dans la RFC 2616 qui est corrigé dans la prochaine révision: http://trac.tools.ietf.org/wg/httpbis/trac/ticket/185 –