Résumé

  • L'élément HTML <base href> fixe l'adresse de départ servant à résoudre les références relatives. Le texte chapter.html reste identique tandis que son adresse complète peut changer.
  • HTML 2.0 l'employait pour les documents lus hors de leur contexte habituel. Les normes suivantes ont précisé sa priorité, le premier élément retenu et la restriction base-uri.

Le plan n'a pas changé. Les pancartes non plus : « chapitre suivant », « image », « formulaire ». Pourtant, quelqu'un a déplacé le point à partir duquel toutes les distances sont calculées. Le navigateur lit désormais la carte depuis une autre ville. Voilà le pouvoir de <base href> : modifier l'origine des adresses relatives sans retoucher chacune des références qui en dépendent.

Cette astuce répondait à une difficulté bien concrète. RFC 1866, la description d'HTML 2.0 publiée en novembre 1995, expliquait qu'un document pouvait être lu hors de son contexte habituel. Une page envoyée dans un message ou déplacée perdait l'adresse depuis laquelle interpréter images/logo.gif ou chapitre.html. L'élément BASE lui permettait d'emporter une adresse de référence. Le texte donnait même un exemple d'image dont le chemin relatif était reconstruit à partir de cette base. Le document pouvait voyager sans laisser ses liens à la consigne.

HTML 4.01, en décembre 1999, plaça plus nettement la décision entre les mains de l'auteur : BASE va dans l'en-tête du document, avant les éléments qui désignent des ressources externes. Sa valeur prime sur les renseignements fournis par le protocole, puis sur l'adresse du document. Liens, images, feuilles de style et programmes de traitement des formulaires peuvent contenir des références relatives. Une seule base déplace leur départ commun. La norme prend l'exemple d'une image d'oiseau : la référence ../cages/birds.gif change de chemin effectif lorsque le document déclare une autre base. Le petit élément est un chef de gare pour plusieurs lignes à la fois.

RFC 3986, publié en janvier 2005, mit cette idée dans une hiérarchie plus large. Une base écrite dans le contenu passe avant le contexte qui l'enveloppe et avant l'URL utilisée pour récupérer ce contenu. Un document consulté par courrier électronique peut ainsi conserver le sens voulu de ses chemins. RFC 3986 décrit la résolution des URI en général ; HTML fournit la balise qui la met en pratique dans une page. L'adresse où le navigateur a trouvé le document et l'adresse choisie pour interpréter ses chemins peuvent donc être différentes. Le document reste où il est ; ce sont les directions qu'il donne qui changent.

La norme HTML maintenue par WHATWG prend le relais. Si la base est /book/, un lien écrit chapter.html peut conduire à /book/chapter.html. Sans base déclarée, le navigateur part de l'adresse de repli du document. Le texte du lien, lui, ne bronche pas. Si plusieurs éléments base portent un href, le premier dans l'arbre du document fournit la base. L'attribut target fixe séparément la destination de navigation par défaut pour les liens et formulaires, avec sa propre règle du premier rencontré. « Le premier gagne » demande donc de savoir de quel attribut on parle.

La balise n'obtient pas carte blanche. L'algorithme actuel écarte une URL invalide ainsi que les schémas data: et javascript: comme base, puis revient à l'adresse de repli. Il tient aussi compte de la politique de sécurité du document. CSP niveau 2 a introduit base-uri pour limiter les adresses autorisées à jouer ce rôle. Cette directive ne découle pas automatiquement de default-src. Le site peut conserver la commodité d'une base commune tout en décidant où son aiguille a le droit de pointer.

Le gain est évident pour la personne qui entretient la page. Déplacer un dossier entier de contenus ne l'oblige plus à corriger chaque petite référence. Le coût apparaît lorsque la base est mal choisie ou mal comprise. Une adresse relative affichée ne dit plus, à elle seule, où aboutira le clic. Il faut le document, sa première déclaration de base et les règles qui l'encadrent pour connaître le trajet. Le lecteur voit la flèche. Le navigateur a consulté le plan.

En 1995, il s'agissait de donner une maison à des documents nomades. En 1999, l'auteur disposait d'une priorité explicite. Aujourd'hui, le navigateur applique des règles précises et une éventuelle limite de politique. La même idée traverse le temps : une collection de chemins courts partage un seul point de départ. Il suffit de déplacer ce point pour que toutes les pancartes racontent une nouvelle géographie.