# Uniform Resource Locator

URL
Une$^,$$^,$ ou un URL (sigle de l'anglais : Uniform Resource Locator, littéralement « localisateur uniforme de ressource »), informellement appelée adresse web, est une chaîne de caractères qui indique sous une forme standardisée comment accéder à une ressource du World Wide Web à travers Internet. Les URL commencent par un protocole Internet suivi du caractère deux-points ; la suite est souvent constituée d'un nom de domaine et d'un chemin d'accès.
Conceptuellement, une URL donne la localisation d'une ressource, sans garantir que la ressource s'y trouve, d'où le risque de lien mort. Il existe un autre type de chaîne qui identifient des ressources indépendamment de leur localisation, Uniform Resource Name (URN). URL et URN sont chacune un sous-ensemble des identifiants uniformes de ressource (Uniform Resource Identifier, URI). Tous ces identifiants sont standardisés par Request for comments (RFC), dont le RFC 3986.

## Définition et dénomination

Dans les cercles techniques, les adresses web ont été connues sous divers noms : adresse WWW, Universal Document Identifier, Universal Resource Identifiers (RFC 1630), et finalement divisées en Uniform Resource Locators (URL, RFC 1738, RFC 1808) et Uniform Resource Names (URN, RFC 1737), le tout étant des Uniform Resource Identifiers (URI, RFC 2396, RFC 3986). L'abréviation URL est utilisée dans le standard HTML 3.2, et elle est devenue la plus connue et utilisée par les techniciens. La situation est devenue suffisamment confuse pour que le RFC 3305 soit écrit pour clarifier la terminologie.
Le nom original que l'inventeur du web donne aux adresses web est Universal Document Identifier (UDI). L'été 1992, il propose à l'Internet Engineering Task Force (IETF) de standardiser ces UDI, mais la dénomination « universel » a été écartée car jugée trop « arrogante » pour un projet alors jeune comme le Web. La dénomination Uniform Resource Identifier (URI) est le compromis résultant.
Lors de la standardisation des URI, il était clair qu'en pratique, les adresses web n'identifiaient pas des documents, mais des emplacements de documents. Autrement dit, si un document est déplacé, alors son adresse change. En pratique, lorsqu'une ressource est déplacée, tous les hyperliens qui y mènent sont brisés, ce qui donne l'erreur HTTP 404 sur un serveur HTTP.
Devant cet état de fait, il a été décidé que les adresses web seraient appelées Uniform Resource Locator (URL). L'idée était de standardiser deux sortes d'URI : Les URL seraient les URI qui indiquent « comment » (par quel chemin sur le réseau) accéder à une ressource, sa localisation ; les Uniform Resource Names (URN) seraient les URI qui identifient les documents eux-mêmes, indépendamment de leur localisation.
Tim Berners-Lee ne cessait cependant pas d'insister pour que, au moins en théorie, les adresses web soient conçues pour être universelles. Il trouvait aussi que l'IETF perdait son temps en discussions, aussi en juin 1994 il publie le RFC 1630, Universal Resource Identifiers in WWW. Ce premier request for comments sur les adresses web est de la catégorie informative. Il décrit simplement la pratique de l'époque, et contient quelques erreurs.

### Francisation

Diverses francisations ont été proposées par des organismes nationaux. Le Vocabulaire de l'informatique et de l'internet publié au Journal officiel du 16 mars 1999 par la Commission générale de terminologie et de néologie de France a proposé « adresse réticulaire » et « adresse universelle ». Ces deux dénominations ont été rejetées par l'Office québécois de la langue française à cause de leur manque de précision, et elles ne sont pas entrées dans l'usage courant.
L'Office québécois de la langue française propose, « adresse URL », « URL », « adresse web » et « adresse W3 ». Il fait remarquer que « adresse web » ne s'utilise généralement que pour les ressources des sites web, alors que l'abréviation URL met l'accent sur l'universalité de ces adresses, qui peuvent identifier des forums Usenet, des sites FTP, etc. Le grand public confond aussi souvent adresse web, adresse électronique et adresse IP.
Pour éviter toutes ces ambiguïtés, les professionnels du web utilisent souvent l'abréviation « URL », bien qu'ils fassent en fait référence aux URI.

## Usages
### Dans les navigateurs web

Lorsqu'on navigue sur le Web, le navigateur web affiche l'URL de la ressource consultée dans la barre d'adresse. Si l'on veut consulter une ressource dont on connaît l'URL, on peut directement la taper dans cette barre.
Dans les premières années du Web, les navigateurs web n'acceptaient que des adresses techniquement valides pour identifier les ressources. Mais à la suite du développement du Web, le protocole de communication HTTP s'est imposé pour transmettre l'immense majorité des ressources consultées. Ainsi jusque dans les années 2010 les URL de page web commençaient presque toujours par http://, puis https:// dans les années suivantes. Les navigateurs web ont donc évolué pour permettre l'omission de ces caractères lors d'une saisie dans leur barre d'adresse.
Plus récemment, certains navigateurs comme Google Chrome n'affichent plus l'URL complète dans la barre d'adresse. Le protocole ou le préfixe « www » peuvent être masqués$^,$.

#### Historique de navigation

Les navigateurs web conservent un historique des URL consultées. Cela leur permet de reconnaître et présenter de manière distinctive les hyperliens vers des ressources déjà consultées.

#### Pages favorites

Il suffit à un navigateur web de conserver l'URL d'une ressource pour constituer une liste de favoris (ou marque-pages). Lorsqu'un titre de ressource existe, les navigateurs le conservent aussi, ce qui permet d'afficher le titre d'une page plutôt que son URL.

### Dans les pages web

En HTML, le langage conçu pour écrire les pages web, on trouve de nombreuses URL. Chaque hyperlien est techniquement constitué d'une URL, invisible mais utilisée par le navigateur, et du texte (parfois d'une image) constituant la partie visible de l'hyperlien. Les URL sont aussi utilisées pour indiquer au navigateur la localisation de chaque ressource annexe inclue dans la page : images, vidéos, programmes informatiques, etc.

### Dans la vie courante

Des adresses web sont souvent données dans la publicité, ou indiquées sur les produits. Les adresses faciles à retenir sont alors recherchées. Ces adresses sont destinées à être saisies dans la barre d'adresse d'un navigateur, donc le http:// du protocole peut être omis. L'adresse web se résume alors à un simple nom de domaine, comme www.example.com. Ce nom est apparu tellement important dans la communication de certaines entreprises, que durant la bulle Internet, elles ont utilisé l'adresse de leur site web en tant que nom commercial (Amazon.com, etc.).
D'autre part, une activité économique spécialisée s'est constituée pour acheter les noms de domaine reposant sur des mots courants, susceptibles d'être fréquemment recherchés par des Internautes. En règle générale, les domaines terminant par .com ont une valeur plus élevée que ceux terminant par des extensions nationales, en .fr par exemple. Dans d'autres cas, les noms de domaine composés de mots appartenant à certains champs lexicaux spécifiques voient leur valeur décuplée par une association avec des extensions particulières. En effet, à titre d'exemple,.io est largement associée à l'univers des nouvelles technologies. Afin de donner un ordre de grandeur, en octobre 2022, le prix du nom de domaine sex.online dépassait le million d'euros.
Légalement plus trouble, le typosquatting consiste à acheter sans autorisation des domaines dont le nom s'apparente à des marques connues appartenant à des tiers, parfois en remplaçant un caractère par un caractère visuellement très similaire d'un autre alphabet.
Le cybersquattage consiste à acheter un nom de domaine portant un nom appartenant à une tierce partie, pour le lui revendre chèrement. C'est illégal dans de nombreux pays.

### Escroquerie de type hameçonnage

L'escroquerie appelée hameçonnage consiste à envoyer à une victime une URL qui ressemble à celle d'un site web légitime, comme celui de sa banque, alors qu'en fait il s'agit de l'URL d'un site conçu pour extorquer des informations confidentielles, comme les codes d'accès au compte bancaire.

## Conception

Les trois inventions à la base du World Wide Web sont :
* les adresses Web
* le protocole de communication Hypertext Transfer Protocol (HTTP)
* le langage de balisage HyperText Markup Language (HTML)
Bien qu'un protocole (HTTP) et un format de données (HTML) aient été développés spécifiquement pour le Web, le web est conçu pour imposer un minimum de contraintes techniques. En particulier, d'autres formats et protocoles que HTML et HTTP peuvent être utilisés. Cependant, pour qu'une ressource puisse faire partie du Web, elle doit être exprimable sous la forme d'une adresse web. C'est en ce sens que les adresses sont l'invention la plus fondamentale.

## Syntaxe

La syntaxe générale des URL est la suivante :
* protocole:partie_spécifique
Une URL est une chaîne de caractères combinant les informations nécessaires pour indiquer à un logiciel comment accéder à une ressource Internet. Ces informations peuvent notamment comprendre le protocole de communication, un nom d'utilisateur, un mot de passe, une adresse IP ou un nom de domaine, un numéro de port TCP/IP, un chemin d'accès, une requête.
Les informations nécessaires varient selon la ressource et le contexte d'utilisation de l'URL. En outre un identificateur de fragment peut être ajouté à la fin d'une URL pour identifier un élément à l'intérieur de la ressource. Bien que l'identificateur de fragment ne fasse pas formellement partie de l'URL, il est également décrit dans cet article et dans les standards techniques.

### URL absolue de type hiérarchique

De nombreux protocoles (HTTP, FTP) ont une forme d'adresse dite hiérarchique.
| URL | http://Jojo:lApIn@www.example.com:8888/chemin/d/acc%C3%A8s.php?q=req&q2=req2#signet | http://Jojo:lApIn@www.example.com:8888/chemin/d/acc%C3%A8s.php?q=req&q2=req2#signet | http://Jojo:lApIn@www.example.com:8888/chemin/d/acc%C3%A8s.php?q=req&q2=req2#signet | http://Jojo:lApIn@www.example.com:8888/chemin/d/acc%C3%A8s.php?q=req&q2=req2#signet | http://Jojo:lApIn@www.example.com:8888/chemin/d/acc%C3%A8s.php?q=req&q2=req2#signet | http://Jojo:lApIn@www.example.com:8888/chemin/d/acc%C3%A8s.php?q=req&q2=req2#signet | http://Jojo:lApIn@www.example.com:8888/chemin/d/acc%C3%A8s.php?q=req&q2=req2#signet | http://Jojo:lApIn@www.example.com:8888/chemin/d/acc%C3%A8s.php?q=req&q2=req2#signet | http://Jojo:lApIn@www.example.com:8888/chemin/d/acc%C3%A8s.php?q=req&q2=req2#signet | http://Jojo:lApIn@www.example.com:8888/chemin/d/acc%C3%A8s.php?q=req&q2=req2#signet | http://Jojo:lApIn@www.example.com:8888/chemin/d/acc%C3%A8s.php?q=req&q2=req2#signet | http://Jojo:lApIn@www.example.com:8888/chemin/d/acc%C3%A8s.php?q=req&q2=req2#signet | http://Jojo:lApIn@www.example.com:8888/chemin/d/acc%C3%A8s.php?q=req&q2=req2#signet | http://Jojo:lApIn@www.example.com:8888/chemin/d/acc%C3%A8s.php?q=req&q2=req2#signet | http://Jojo:lApIn@www.example.com:8888/chemin/d/acc%C3%A8s.php?q=req&q2=req2#signet |
| nom des composants | protocole | : | // | nom | : | mot de passe | @ | hôte | : | port | chemin d'accès | ? | requête | # | fragment |
| valeur des composants | http | : | // | Jojo | : | lApIn | @ | www.example.com | : | 8888 | /chemin/d/acc%C3%A8s.php | ? | q=req&q2=req2 | # | signet |
Une URL absolue permet d'indiquer comment accéder à une ressource indépendamment de tout contexte où elle peut être précisée ou transmise. Elle commence par l'indication d'un schéma de représentation (spécifique au protocole de communication utilisé pour accéder à cette ressource), suivi de l'ensemble des paramètres permettant de localiser sur le réseau le service hébergeant la ressource, puis permet de préciser à ce service le nom d'une ressource à traiter, transmettre des données de traitement, acheminer et récupérer les résultats, puis de préciser éventuellement quelle partie de ce résultat sera utilisée.
Exemple : http://Jojo:lApIn@www.example.com:8888/chemin/d/acc%C3%A8s.php?q=req&q2=req2#signet
* Protocole, normalement obligatoire (mais certains clients web peuvent tenter de déterminer le protocole à partir de la forme du nom du service codé ci-dessous) :
** http : protocole de communication, en l’occurrence ici HTTP, pour accéder à un serveur web,
** : : caractère de séparation obligatoire si le protocole est précisé.
* Localisation complète de la ressource, représentée selon le protocole de représentation ci-dessus :
** emplacement du service hébergeant la ressource sur l’espace du réseau global :
*** // : chaîne de caractères pour les protocoles dont la requête comprend un chemin d'accès, permettant de préciser et localiser le service avant ce chemin,
*** données d’authentification (optionnelles, le service peut les demander séparément de façon plus sécurisée que via l’URL). Le nom, le mot de passe et le numéro de port sont rarement utilisés. En plus les attaques d'hameçonnage peuvent tirer parti de cette syntaxe pour masquer un nom de domaine illégitime sous l'apparence d'un nom légitime. Les navigateurs ont retiré le support des données d’authentification :
**** Jojo : nom d’utilisateur, notamment utile pour accéder à des parties non publiques d'un site web,
**** : : caractère de séparation si un mot de passe est indiqué,
**** lApIn : mot de passe de l'utilisateur, indiqué ici « en clair »,
**** @ : caractère terminant les données d'identification présentes avant le nom du service.
*** www.exemple.com : nom de domaine du service ; on peut parfois utiliser plutôt son adresse IP. Si le nom de service ou l’adresse peuvent contenir des caractères réservés comme :, le nom de service ou l'adresse sera encadré de crochets doubles [[ ]]. Lui-même se décompose en:
**** www: sous-domaine (par défaut www),
**** exemple : nom de domaine de deuxième niveau,
**** com : nom de domaine de premier niveau,
*** indication optionnelle d’un numéro de port (au cas où le même serveur possède des services n’utilisant pas le port par défaut pour le protocole de communication) :
**** : : caractère indiquant qu’un numéro de port est précisé en suffixe,
**** 8888 : numéro de port TCP/IP du serveur HTTP, doit être précisé lorsqu’il ne s’agit pas du port standard pour le protocole utilisé (qui est 80 pour HTTP, 21 pour FTP…),
**** [2001:db8::1234]:8888 : Dans le cas d'une adresse IPv6, si on veut spécifier le port, il est obligatoire de mettre l'adresse entre crochets pour ne pas confondre le port et l'adresse.
** Nom complet de la ressource à demander sur le service une fois connecté :
*** /chemin/d/ : chemin absolu (commençant par un /) sur le service contenant la page web, obligatoire pour les services à chemin d’accès (par défaut ce chemin sera /),
*** acc%C3%A8s.php : nom de la page web, optionnel (de nombreux services web déterminent un nom de ressource par défaut pour chaque chemin indiqué). On remarque qu’un caractère non ASCII comme « è » est codé en « %C3%A8 ». L'extension n'a aucune signification directe pour le client, mais en revêt parfois pour le serveur qui l’utilise localement pour savoir comment traiter la ressource demandée et la présenter au client.
** Données supplémentaires optionnelles, transmises au service lors de la demande à la ressource :
*** ? : caractère de séparation obligatoire pour indiquer que des données complémentaires suivent.
*** q=req&q2=req2 - chaîne de requête, traitée par la page web sur le serveur.
* Données supplémentaires optionnelles, pour l’exploitation de la ressource après son obtention par le logiciel client (non transmises dans la requête au service) :
** # : caractère de séparation obligatoire pour indiquer un signet ou une balise,
** signet : identificateur du signet ou de la balise. Il s’agit d’un emplacement à l’intérieur de la page web retournée par le service, cette donnée sera traitée par le navigateur web.
Quelques exemples :
* URL de Wikipédia :
    http://fr.wikipedia.org/
* URL de cette page sur Wikipédia :
    http://fr.wikipedia.org/wiki/Uniform_Resource_Locator
* URL d'un fichier sur un site FTP :
    ftp://ftp.rfc-editor.org/in-notes/rfc2396.txt
* URL d'un lien (mailto) vers une adresse courriel :
    mailto:quidam@exemple.com
* URL d'un forum de discussion de Usenet :
    news:fr.comp.infosystemes.www.auteurs
* URL d'un site Gopher :
    gopher://gopher.quux.org/
* URL d'un fichier de l'ordinateur:
    file:///home/joe/Documents/cv.pdf

#### URL relative

Les protocoles utilisant un chemin hiérarchique permettent l'utilisation d'URL relatives. Une URL relative ne contient pas de protocole, généralement pas de nom de domaine, et souvent un chemin incomplet. Ceux-ci sont déduits à partir de l'URL de la ressource contenant l'URL relative.
Les URL relatives sont souvent utilisées pour les hyperliens à l'intérieur d'un même site web. Si le document d'URL http://fr.wikipedia.org/wiki/Web contient l'URL relative Navigateur, cela correspond à http://fr.wikipedia.org/wiki/Navigateur. Les URL relatives sont directement inspirées de la syntaxe des systèmes de fichiers Unix. L'usage d'URL relatives permet de ne pas avoir à reprendre l'ensemble des liens lors du changement d'adresse d'un site.
L'URL :
* ./ correspond au dossier actuel ;
* ../ correspond au dossier parent ;
* / correspond au dossier racine ;
* // correspond au domaine.

### Jeu de caractères

Originellement, les adresses ne contenaient que des caractères ASCII. Pour pouvoir représenter des caractères non ASCII, il existe un système d'échappement codant en ASCII la valeur hexadécimale de chaque octet d'un caractère : %HH où HH est un nombre hexadécimal. Toutefois, ce système d'échappement n'indique pas quel est le codage de caractères sous-jacent (ISO/CEI 8859-1, UTF-8, etc.).
Une extension des URI a été créée pour étendre les adresses web au-delà de l'ASCII : les Internationalized Resource Identifiers (IRI).

## Media Resource Locator

Media Resource Locator (MRL) est une chaîne de caractères utilisée pour identifier des ressources multimédia sur le World Wide Web ou en local (c’est-à-dire sur l'ordinateur de l'utilisateur). Le terme MRL est une analogie avec le terme URL.
Une MRL est utilisée pour la lecture de contenu multimédia en streaming sur Internet, de même que par certains lecteur multimédias comme VLC media player et Xine.

## Extension de raccourcis .URL

Les raccourcis d’adresse internet disponibles sur le bureau W11 par exemple ont pour extension .url. Cette extension a une particularité qu''elle partage avec l'extension des raccourcis de nom de fichiers .lnk : décocher la case "Masquer les extensions des fichiers dont le type est connu" ne suffit pas à les afficher. La procédure pour y arriver est complexe et potentiellement dangereuse quand elle passe par la base de registre. Elle est documentée dans le cas de .lnk .