URLs Uniform Resource Locators

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://en.wikipedia.org/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

Pseudo-protocoles

L’autorité

https://toto:superman@www.example.com:8080/profile

  • Nom d’utilisateur,
  • Mot de passe (mécanisme d’authentification dépendant du protocole),
  • Hôte : nom de domaine + numéro de port (port par défaut : 80).

Sécurité

Une bonne partie des mécanismes de sécurité des navigateurs est basée sur l’autorité :

  • Same Origin Policy (JavaScript, requêtes AJAX) : contrôle d’égalité stricte, incluant le schéma ;
  • Cookies : limités au domaine et sous-domanes.

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 paires clef=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

Références

Fork me on GitHub