URI : ce qu’il faut savoir sur le « Uniform Resource Identifier »

La plupart des gens connaissent le concept d’URL. Les adresses URL nous permettent d’accéder à des sites Web sur Internet. Mais qu’est-ce qu’un URI ? Le concept d‘URI provient de Tim Berners-Lee, le principal inventeur du World Wide Web. Lorsqu’il a employé ce terme pour la première fois dans la RFC 2396, il parlait encore d’un « Universal Resource Identifier » (Identifiant de Ressource Universel). Entre temps, et notamment grâce à l’apparition du World Wide Web Consortium (W3C), la notion de « URI » s’est établie en tant qu‘acronyme de Uniform Resource Identifier, et est comprise en tant que telle jusqu’à aujourd’hui. Toutefois, le concept est resté le même depuis.

Qu’est-ce que le « Uniform Resource Identifier » ?

Le « Uniform Resource Identifier » (URI) permet d’identifier les ressources abstraites ou physiques sur internet. Le type de ressource que l’URI représente peut varier en fonction de la situation. Les URI peuvent par exemple identifier des sites Web, tout comme ils peuvent identifier des expéditeurs ou des destinataires de courriels. Les applications utilisent un identifiant unique pour pouvoir interagir avec une ressource ou pour consulter les données d’une ressource.

C’est sur cette base que fonctionnent les protocoles comme HTTP ou FTP, puisque la forme de l’adresse est définie par une syntaxe commune employée pour tous les URI. À partir d’un URI, un système peut lire l’information, connaître son emplacement et savoir par quel moyen elle est accessible.

La syntaxe dans les URI

Les URI peuvent contenir jusqu’à cinq parties, parmi lesquelles seules deux sont obligatoires :

  • Scheme (le schéma) : indique le protocole utilisé.
  • Authority (l’autorité) : identifie le domaine.
  • Path (le chemin) : indique le chemin d’accès à la ressource.
  • Query (la requête) : représente une action de requête.
  • Fragment (le fragment) : désigne un aspect partiel d’une ressource.

Seuls le schéma et le chemin doivent nécessairement apparaître dans chaque identifiant. Dans la syntaxe commune aux URI, toutes les parties apparaissent les unes derrière les autres et sont séparées par des signes bien précis.

scheme :// authority path ? query # fragment

La double barre oblique après le premier double point n’est nécessaire que lorsque la partie authority renferme des informations. La partie authority peut toujours contenir des informations sur l'utilisateur, qui sont ensuite séparées du domaine par le symbole @. Cette partie peut également inclure une spécification du port à la fin, elle-même séparée du domaine par un double point.

Prenons l’exemple d’une adresse Web classique : "https://example.org/test/test1?search=test-question#part2"

  • Scheme : https
  • Authority : example.org
  • Path : test/test1
  • Query : search=test-question
  • Fragment : part2

Dans cet exemple, l’URI fait référence à une partie d’un site Web. Cette partie (la partie 2) est accessible via HTTP et se trouve sur un appareil portant l’identifiant example.org. Elle est accessible via le chemin indiqué, en effectuant une recherche préalable. Le « Uniform Resource Identifier » peut tout aussi bien identifier une adresse email : "mailto:user@example.org".

  • Scheme : mailto
  • Path : user@example.org

Dans le cas présent, seules les deux parties obligatoires apparaissent dans l’URI. Les données ou encore les numéros de téléphones sont d’autres exemples de ressources qui peuvent être identifiées selon cette syntaxe.

Note

Bien que le chemin (path) constitue une donnée obligatoire dans chaque URI, le contenu de chaque partie peut toutefois rester vide. Ainsi l’adresse « http://example.org/ » est bien un URI valide même si le path est vide.

Les schémas d’URI, c’est-à-dire les premières parties de chaque URI, sont attribués par l’IANA. Bien qu’on puisse utiliser ses propres schémas confirmés par l’organisation, ceux-ci sont cependant connus de l’ensemble du réseau internet. Les schémas les plus connus sont les suivants :

  • About : informations de navigation
  • Data : inclusion de données
  • Feed : flux RSS
  • File : fichiers
  • ftp : File Transfer Protocol
  • git: gestion de versions avec Git
  • http : Hypertext Transfer Protocol
  • https : Hypertext Transfer Protocol Secure
  • imap : Internet Message Access Protocol
  • mailto : adresses email
  • news : Usenet Newsgroups
  • pop : POP3
  • rsync : Synchronisation des fichiers
  • sftp : SSH File Transfer Protocol
  • ssh : Secure Shell
  • tel : Numéros de téléphone
  • urn : Uniform Resource Names
Conseil

L’IANA met à disposition une liste officielle de tous les schémas URI connus.

Le référencement des URI

Pour éviter de devoir toujours rédiger (et enregistrer) la spécification complète d’un URI, certaines applications utilisent une version plus courte de la syntaxe. Pour que la forme raccourcie soit correctement comprise, l’adresse URI de base doit toujours être entièrement formulée. Le référencement URI est alors résolu en interne. C’est pourquoi on distingue le référencement absolu du référencement relatif. L’URI absolu fonctionne indépendamment du contexte et se compose au moins du schéma (scheme), de l’autorité (authority) et du chemin (path). Le référencement relatif correspond à la forme courte de la syntaxe : cette forme ne précise que sa différence par rapport à l’URI de base. Un URI relatif doit donc se situer dans le même espace de noms que l’URI de base.

Le référencement relatif ne spécifie aucun schéma (scheme). Pour qu’on puisse différencier les URI relatifs des URI absolus, le double point dans le premier segment du chemin ne doit pas être indiqué, sinon la partie avant le double point pourrait être interprétée comme un schéma (scheme). On distingue trois types de référencements relatifs que l’on peut reconnaître grâce à des marqueurs distincts au début du chemin (path) :

  • Une référence relative commence sans barre oblique.
  • Une référence absolue commence par une barre oblique.
  • Une référence de réseau commence par une double barre oblique.

URI vs URL vs URN

La similarité des abréviations URI, URL et URN est bien souvent source de confusion. Cette confusion peut également s’expliquer par le fait que les trois termes sont étroitement liés d’un point de vue technique. Un Uniform Resource Locator permet d’identifier l’emplacement d’une ressource. L’URL est donc aussi utilisée sur internet, pour pouvoir naviguer sur certains sites bien précis. En revanche, le Uniform Resource Name est entièrement indépendant de l’emplacement de la ressource : il permet plutôt d’identifier une ressource de manière permanente. Si les URL sont principalement connues sous formes d’adresses web, elles peuvent aussi se présenter sous la forme d’un ISBN pour identifier un livre de manière permanente.

Les URL et les URN respectent la syntaxe commune aux URI. Les deux désignations sont donc des sous-ensembles d’URI. C’est pourquoi les URL et les URN sont toujours des URI. Inversement, les URI ne sont pas nécessairement des URL ou des URN.