Des adresses pour le Web
URL = Uniform Resource Locator
- Introduits par Tim Berners-Lee en 1994 dans la RFC 1738,
- Identifient une ressource dans le Web, et le moyen d’y accéder et d’intéragir avec.
Anatomie d’une URL
https:///wiki/Uniform_Resource_Locator#Syntax
- Schéma : méthode d’accès (en général un protocole réseau) ;
- Autorité : les informations sur le serveur à contacter ;
- Chemin : l’identifiant de la ressource auprès du serveur ;
- Fragment : une sous-ressource à accéder.
Le schéma
Protocoles traités par le navigateur
http
,https
: protocole HTTP (Web),file
: accéder un fichier local,ftp
,gopher
,shttp
: autres protocoles réseau.
Protocoles délégués à une application externe
mailto
: composer un mail (ex. :mailto:tim-berners-lee@example.com
),callto
,sip
,sms
: téléphonie,
Pseudo-protocoles
javascript
: evaluateur JavaScript (ex. :javascript:alert('hello')
>,data
: inclusion de documents (ex. :data:text/plain;base64,SGVsbG8hCg==
)about
,chrome
: configuration du navigateur,view-source
: exploration du code source (ex. :view-source:
)
Le chemin
Inspiré de la syntaxe des chemins dans les systèmes de fichiers UNIX.
https://www.dropbox.com/home/pictures/1985/10/26/doc.jpg
Représentation d’une arborescence :
- Racine :
/
, origine de l’arborescence, - Niveau courant :
.
, - Remonter d’un niveau :
..
,
Exemples
/home/pictures/./1985
==/home/pictures/1985
,/home/pictures/../music
==/home/music
En pratique, le serveur web est libre d’interpréter le chemin comme bon il lui semble.
Le query string et le fragment
https://www.google.com/search?q=url&ie=utf-8#res
Le query string
- Défini dans la RFC 3986,
- Commence par
?
, suite de pairesclef=valeur
séparées par&
, - Indique en général des paramètres associés à la ressource.
Le fragment
- Commence par
#
, - Indique un sous-document (ex. sauter à une sous-section dans le navigateur),
- N’est pas transmis au serveur.
URLs complètes, absolues, relatives
http://example.com/home/profile?action=view#picture
Une URL peut être évaluée dans le contexte d’une autre URL (par ex., dans la navigation de liens) :
-
URLs complètes : commençant par le schema, le contexte est ignoré
https://google.com/search
→https://google.com/search
-
URLs relative au protocole : commençant par
//
, uniquement le protocole est gardé//jquery.com/latest.js
→http://jquery.com/latest.js
-
URLs absolues : commençant par
/
, récupère le schema et l’autorité du contexte/home/music
→http://example.com/home/music
-
URLs relatives : commençant par tout autre caractère, tout est gardé jusqu’au dernier
/
du chemin../login
→http://example.com/login
www.google.fr
→http://example.com/home/www.google.fr
-
URLs relatives (cas spéciaux) : commençant par
?
ou#
,?action=edit
→http://example.com/home/profile?action=edit
#email
→http://example.com/home/profile?action=view#email