Bien comprendre les URL !

Rappel

Nous rappelons ici qu'une URL[1] est de la forme simplifiée suivante :

protocole://nom_ou_adresse_IP/document

Le protocole que nous connaissons actuellement est http ou https selon si on chiffre ou pas nos connexions.

MéthodeDéroulé d'une connexion à un serveur

Si un utilisateur saisit cette adresse dans un navigateur : http://portail.lyc-la-martiniere-diderot.ac-lyon.fr/srv20/co/_Module_SNT.html, il se passe ces actions :

  1. Le navigateur Web isole le nom de la machine portail.lyc-la-martiniere-diderot.ac-lyon.fr

  2. Le navigateur Web effectue une requête DNS pour obtenir l'adresse IP du serveur Web hébergeant le site (avec Gnu/Linux, nous pouvons utilisons la commande host portail.lyc-la-martiniere-diderot.ac-lyon.fr), ici ce sera donc 194.199.75.143

  3. Le navigateur Web se connecte à la machine dont l'adresse IP est 194.199.75.143, en utilisant le protocole TCP, sur le port 80. (Cf partie du cours sur le Réseau pour TCP)

  4. Une fois la connexion établie, le navigateur Web envoie un certain nombre de messages en se conformant au protocole HTTP, pour demander la ressource _Module_SNT.html contenue dans le dossier srv20/co/.

  5. Le serveur Web se trouvant à l'adresse 194.199.75.143 envoie en réponse le contenu du fichier au navigateur Web

  6. Le navigateur Web de l'utilisateur peut ensuite parcourir le fichier, et afficher la page correspondante.

Toutes ces actions, qui sont effectuées en quelques milli-secondes, se répètent à chaque fois que la navigation de l'utilisateur nécessite une nouvelle ressource :

  • clic sur un lien ;

  • présence d'une image, d'une vidéo...

  • lorsque l'utilisateur soumet des informations au moyen d'un formulaire.

Syntaxe complète des URL

La syntaxe des URL est un peu plus complexe que ci-dessus, voici en réalité une URL :

protocole://nom_ou_adresse_IP:port/document?paramètre1=valeur1&...&paramètreN=valeurN#id

  • port : pour http, le port TCP par défaut est 80 (443 pour https) mais il est possible de configurer cela, par exemple si on veut avoir plusieurs serveurs sur la même machine.

  • document : le document est écrit comme chemin relatif à partir du répertoire où est stocké le site sur le serveur (généralement /var/www/html/). Cependant, le serveur peut réécrire l'URL en transformant l'adresse en un chemin n'ayant rien à voir. Par exemple, avec des pages web personnelles sur des serveurs mutualisés :

    • https://www.mon-site.fr/perso/alice correspond en réalité à /home/alice/public_html.

    • le dossier perso n'existe pas vraiment sur le serveur...

  • ? : la partie située après le document et marqué par un "?" est la liste des paramètres de requête. Ces paramètres sont des couples pi=vi ou pi est le nom du paramètre et vi sa valeur.

  • & : les paires précédentes sont séparées par un &, cela permet donc de passer des valeurs au serveur avec la requête.

  • #id : cette portion est appelée un signet et permet de cibler un élément particulier dans la ressource. Il s'agit donc de l'identifiant d'un élément HTML.

À présent, nous allons pouvoir utiliser ces paramètres d'URL en utilisant des formulaires HTML.

ComplémentTracking / Pistage des utilisateurs par URL

Les URL permettent aussi de tracker les utilisateurs via les URL. Voici 3 exemples d'URL avec trackers :

  • https://example.com?utm_source=newsletter1&utm_medium=email&utm_campaign=sale

  • https://www.amazon.com/dp/exampleProduct/ref=sxin_0_pb?__mk_de_DE=ÅMÅŽÕÑ&keywords=tea&pd_rd_i=exampleProduct&pd_rd_r=8d39e4cd-1e4f-43db-b6e7-72e969a84aa5&pd_rd_w=1pcKM&pd_rd_wg=hYrNl&pf_rd_p=50bbfd25-5ef7-41a2-68d6-74d854b30e30&pf_rd_r=0GMWD0YYKA7XFGX55ADP&qid=1517757263&rnid=2914120011

  • https://viva.villeurbanne.fr/l-essentiel/2020/aout/mobilisation-citoyenne-pour-un-quartier-plus-propre?fbclid=IwAR2AXd6HAVaf0WdmfJV8eJw4GHO37-NnSgtSWBxBpOXICybwpPC6sSRs

On remarque sur cette dernière URL le paramètre fbclid=XXXX qui permet à Facebook de récupérer des informations sur vos usages en cliquant sur ce lien. Il faut donc penser à nettoyer les url, on peut le faire