Aller au contenu principal

RFC 3986 - Identificateur de Ressource Uniforme (URI) : Syntaxe Générique

  • Statut: Internet Standard
  • Publié: January 2005
  • Stream: IETF
  • Met à jour: RFC1738
  • Remplace: RFC1808, RFC2396, RFC2732
  • Errata: Pas d'errata

Résumé​

Un Identificateur de Ressource Uniforme (Uniform Resource Identifier, URI) est une séquence compacte de caractères qui identifie une ressource abstraite ou physique.

Cette spécification définit :

  • La syntaxe générique des URI
  • Un processus pour résoudre les références URI qui peuvent être sous forme relative
  • Des directives et considérations de sécurité pour l'utilisation des URI sur Internet

Caractéristiques principales :

  • La syntaxe URI définit une grammaire qui est un surensemble de tous les URI valides
  • Permet aux implémentations d'analyser les composants communs d'une référence URI sans connaître les exigences spécifiques au schéma
  • Ne définit pas une grammaire générative pour les URI ; cette tâche est effectuée par les spécifications individuelles de chaque schéma URI

Importance​

La RFC 3986 est au cœur de l'infrastructure Web :

  • 🌐 Définit la syntaxe générique pour les URL et URN
  • 🔗 Fondement de toute localisation de ressources sur le Web
  • 📋 Base pour tous les protocoles incluant HTTP, HTTPS, FTP
  • 🎯 Algorithme de résolution d'URI relatifs
  • 🔒 Considérations de sécurité des URI

Table des matières​

1. Introduction​

  • 1.1 Vue d'ensemble des URI
    • 1.1.1 Syntaxe générique
    • 1.1.2 Exemples
    • 1.1.3 URI, URL et URN
  • 1.2 Considérations de conception
    • 1.2.1 Transcription
    • 1.2.2 Séparation de l'identification et de l'interaction
    • 1.2.3 Identificateurs hiérarchiques
  • 1.3 Notation syntaxique

2. Caractères (Characters)​

  • 2.1 Encodage en pourcentage
  • 2.2 Caractères réservés
  • 2.3 Caractères non réservés
  • 2.4 Quand encoder ou décoder
  • 2.5 Identification des données

3. Composants syntaxiques (Syntax Components)​

  • 3.1 Schéma
  • 3.2 Autorité
    • 3.2.1 Information utilisateur
    • 3.2.2 Hôte
    • 3.2.3 Port
  • 3.3 Chemin
  • 3.4 Requête
  • 3.5 Fragment

4. Usage (Utilisation)​

  • 4.1 Référence URI
  • 4.2 Référence relative
  • 4.3 URI absolu
  • 4.4 Référence au même document
  • 4.5 Référence suffixe

5. Résolution de référence (Reference Resolution)​

  • 5.1 Établissement d'un URI de base
  • 5.2 Résolution relative
  • 5.3 Recomposition des composants
  • 5.4 Exemples de résolution de référence

6. Normalisation et comparaison (Normalization and Comparison)​

  • 6.1 Équivalence
  • 6.2 Échelle de comparaison

7. Considérations de sécurité (Security Considerations)​

  • 7.1 Fiabilité et cohérence
  • 7.2 Construction malveillante
  • 7.3 Transcodage backend
  • 7.4 Formats d'adresse IP rares
  • 7.5 Informations sensibles
  • 7.6 Attaques sémantiques

8. Considérations IANA (IANA Considerations)​

9. Remerciements (Acknowledgements)​

10. Références (References)​

Annexes (Appendices)​

Référence rapide​

Syntaxe générique des URI​

URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]

hier-part = "//" authority path-abempty
/ path-absolute
/ path-rootless
/ path-empty

Exemple de composants URI​

  foo://example.com:8042/over/there?name=ferret#nose
\_/ \______________/\_________/ \_________/ \__/
| | | | |
scheme authority path query fragment

Schémas URI courants​

SchémaUsageExemple
httpProtocole HTTPhttp://www.example.com/
httpsHTTP sécuriséhttps://www.example.com/
ftpTransfert de fichiersftp://ftp.example.com/file.txt
mailtoCourrier électroniquemailto:[email protected]
fileFichier localfile:///path/to/file
dataDonnées en lignedata:text/plain;base64,SGVsbG8=
telTéléphonetel:+1-800-555-1212

Caractères réservés​

gen-delims  = ":" / "/" / "?" / "#" / "[" / "]" / "@"
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="

Caractères non réservés​

unreserved  = ALPHA / DIGIT / "-" / "." / "_" / "~"

Encodage en pourcentage​

pct-encoded = "%" HEXDIG HEXDIG

Exemples :
Espace → %20
"你" (chinois) → %E4%BD%A0

URI vs URL vs URN​

Diagramme de relation​

        URI (Identificateur de Ressource Uniforme)
/ \
URL URN
(Localisateur de Ressource Uniforme) (Nom de Ressource Uniforme)
(Comment accéder) (Ce que c'est)

Comparaison​

ConceptFocusPersistanceExemple
URIIdentificationNon garantieTous les URI
URLLocalisationDépendant de la localisationhttp://example.com/page
URNNomPersistanturn:isbn:0-486-27557-4

Important : Tous les URL sont des URI, tous les URN sont des URI, mais tous les URI ne sont pas des URL ou des URN.

Exigences d'implémentation​

Doit implémenter (MUST)​

  • ✅ Analyse de syntaxe URI de base
  • ✅ Traitement correct de l'encodage en pourcentage
  • ✅ Algorithme de résolution d'URI relatif
  • ✅ Schéma et hôte insensibles à la casse
  • ✅ Suppression des segments de points dans les chemins

Devrait implémenter (SHOULD)​

  • ✅ Normalisation URI
  • ✅ Support IRI (Identificateurs de Ressources Internationalisés)
  • ✅ Support d'adresses IPv6
  • ✅ Gestion sécurisée des informations utilisateur

Peut implémenter (MAY)​

  • Validation spécifique au schéma
  • Comparaison d'équivalence URI
  • Normalisation automatique

RFC connexes​

  • RFC 1738 : Spécification URL (mis à jour)
  • RFC 2396 : Syntaxe générique URI (rendu obsolète)
  • RFC 2732 : Format d'adresse IPv6 (rendu obsolète)
  • RFC 3987 : IRI (Identificateurs de Ressources Internationalisés)
  • RFC 6874 : Identificateurs de zone IPv6
  • RFC 7230 : Syntaxe de message HTTP/1.1
  • RFC 8820 : Conception et propriété URI

Ressources en ligne​


Chapitre suivant : 1. Introduction


Glossary (Glossaire)​

Définitions des termes URI clés utilisés dans RFC 3986.


A​

Absolute URI (URI absolu)​

URI contenant un schéma mais pas de fragment. Utilisé pour identifier indépendamment une ressource.

Authority (Autorité)​

Composant URI contenant les informations utilisateur, l'hôte et le port. Format: [userinfo@]host[:port]


B​

Base URI (URI de base)​

URI absolu utilisé pour résoudre les références relatives.


C​

Character Encoding (Codage de caractères)​

Correspondance entre les caractères et les octets.


D​

Dereference (Déréférencement)​

Action d'effectuer une opération sur la ressource désignée par un URI, au moyen d'un mécanisme d'accès.

Dot Segment (Segment point)​

Segment de chemin . ou .., utilisé pour la navigation en chemin relatif.


F​

Fragment​

Composant optionnel d'un URI, séparé par #, identifiant une ressource secondaire.


G​

gen-delims (délimiteurs généraux)​

Sous-ensemble de caractères réservés: : / ? # [ ] @


H​

Host (Hôte)​

Partie du composant autorité, peut être une adresse IP ou un nom de domaine.

hier-part (partie hiérarchique)​

Structure principale de l'URI, contenant l'autorité et le chemin.

Hierarchical Identifiers (Identificateurs hiérarchiques)​

La syntaxe des URI est organisée hiérarchiquement de gauche à droite, par ordre d'importance décroissante.


I​

IRI (Identificateur de ressource internationalisé)​

Extension d'URI permettant l'utilisation de caractères Unicode (RFC 3987).


L​

Late-Binding (Liaison tardive)​

Le résultat d'une référence URI est généralement déterminé au moment de l'accès et peut varier dans le temps ou selon d'autres aspects de l'interaction.


N​

Normalization (Normalisation)​

Processus de conversion d'un URI en une forme canonique afin de permettre la comparaison.


P​

Path (Chemin)​

Composant URI identifiant une ressource dans la portée de l'autorité.

Percent-Encoding (Encodage en pourcentage)​

Encodage de caractères utilisant % suivi de deux chiffres hexadécimaux.

Port​

Composant d'autorité optionnel spécifiant un port réseau.


Q​

Query (Requête)​

Composant URI optionnel, séparé par ?, transmettant des données non hiérarchiques.


R​

Reserved Characters (Caractères réservés)​

Ensemble de caractères ayant une signification spéciale dans les URI.

Relative Reference (Référence relative)​

Référence URI ne commençant pas par un schéma, résolue par rapport à un URI de base.

Representation (Représentation)​

Enregistrement de l'état d'une ressource à un instant donné.

Resolution (Résolution)​

Processus de conversion d'une référence relative en URI absolu.

Retrieval (Récupération)​

Obtention, au moyen d'un URI, d'une représentation de la ressource associée.


S​

Same-Document Reference (Référence au même document)​

Référence constituée d'une chaîne vide ou ne comportant qu'un composant fragment.

Scheme (Schéma)​

Premier composant d'un URI définissant l'espace de noms de l'identificateur.

Scheme-Based Normalization (Normalisation fondée sur le schéma)​

Application de règles propres au schéma. Exemple: ajout du port par défaut :80 pour les URI HTTP.

Simple String Comparison (Comparaison de chaînes simple)​

Comparaison caractère par caractère de deux URI.

sub-delims (sous-délimiteurs)​

Sous-ensemble de caractères réservés: ! $ & ' ( ) * + , ; =

Syntax-Based Normalization (Normalisation fondée sur la syntaxe)​

Application de règles de normalisation indépendantes du schéma: normalisation de la casse (schéma et hôte insensibles à la casse), normalisation de l'encodage en pourcentage, et normalisation des segments de chemin (suppression de . et ..).


T​

Transcription​

Les URI sont conçus pour la transcription à l'échelle mondiale, en utilisant un jeu de caractères restreint afin de faciliter la saisie entre langues et régions.


U​

Unreserved Characters (Caractères non réservés)​

Caractères pouvant être utilisés dans les URI sans usage réservé: A-Z a-z 0-9 - . _ ~

URI (Identificateur de ressource uniforme)​

Séquence de caractères compacte identifiant une ressource abstraite ou physique.

URI Reference (Référence URI)​

URI ou référence relative.

URL (Localisateur de ressource uniforme)​

Sous-ensemble d'URI fournissant un mécanisme d'accès.

URN (Nom de ressource uniforme)​

Identificateur persistant et indépendant de l'emplacement.

Userinfo (Informations utilisateur)​

Partie optionnelle du composant autorité, avant @.


Retour: Page d'accueil RFC 3986