Analyseur d'URL

Analysez toute URL en protocole, hôte, port, chemin, requête et fragment grâce à la norme WHATWG URL. Les paramètres de requête sont décodés dans un tableau lisible.

Découpez une URL en chaque composant vu par le navigateur. Collez une URL et chaque partie est extraite avec le même analyseur WHATWG que votre navigateur, si bien que le résultat correspond exactement à l'interprétation réelle de l'URL. Les paramètres de requête sont décodés dans un tableau.

Paramètres de requête

L'anatomie d'une URL

La forme d'une URL

Chaque URL absolue suit le même squelette :

scheme://user:password@host:port/path?query#fragment

La plupart des URL n'utilisent qu'une poignée de ces emplacements, mais la grammaire permet toujours tous les autres. Lire une URL consiste en grande partie à savoir où s'arrête un composant et où commence le suivant, ce qui est décidé par les délimiteurs ://, @, :, /, ? et #.

Composant par composant

Protocole (schéma) identifie comment récupérer la ressource — https:, mailto:, ftp:. Notez que l'analyseur WHATWG inclut les deux-points finaux dans cette valeur, ce qui surprend ceux qui la comparent à la chaîne "https".

Nom d'utilisateur et mot de passe constituent la section userinfo obsolète. Les navigateurs les analysent encore mais les retirent des requêtes et avertissent souvent, car intégrer des identifiants dans une URL les divulgue dans l'historique, les journaux et les en-têtes Referer. Traitez leur présence dans une URL que vous n'avez pas écrite comme un signal d'hameçonnage.

Nom d'hôte est le domaine ou l'adresse IP seuls. Hôte est le nom d'hôte auquel s'ajoute le port lorsqu'un port non défaut est présent, c'est pourquoi les deux champs se ressemblent souvent.

Port est vide lorsque l'URL utilise le port par défaut du schéma — 443 pour https, 80 pour http. L'analyseur normalise cela : example.com:443/ signale un port vide car 443 n'apporte aucune information.

Chemin est tout ce qui va du premier / jusqu'à la requête. C'est le seul composant jamais vide pour une URL http(s) ; une origine nue obtient un chemin /.

Chaîne de requête commence à ? et transporte les paramètres. Fragment commence à # et est la seule partie jamais envoyée au serveur — elle est gérée purement côté client, c'est pourquoi les applications monopages s'en sont autrefois servies pour le routage et pourquoi un jeton d'accès dans un fragment reste hors des journaux serveur.

Origine est le triplet lié à la sécurité formé du schéma, de l'hôte et du port. Deux URL partagent une origine uniquement lorsque les trois correspondent, et c'est exactement sur quoi reposent la politique de même origine et les décisions CORS.

Pourquoi l'analyseur est strict

L'analyseur WHATWG URL n'accepte que les URL absolues. example.com/page n'a pas de schéma, il ne peut donc pas être analysé seul — l'analyseur ne peut pas savoir si vous vouliez dire example.com/page ou un chemin relatif. Un vrai code résout les références relatives par rapport à une URL de base ; cet outil exige délibérément la forme absolue afin que ce que vous voyez soit sans ambiguïté.

Normalisation que vous remarquerez

L'analyseur ne rend pas la chaîne brute. Il met le schéma et l'hôte en minuscules, résout les segments . et .. dans le chemin, supprime les ports par défaut et convertit les noms de domaine internationalisés en leur forme Punycode, si bien que münchen.de signale un nom d'hôte xn--mnchen-3ya.de. C'est une fonctionnalité : elle vous montre l'URL telle que la pile réseau la traitera réellement, et non telle qu'elle a été saisie.

Paramètres répétés

Une chaîne de requête peut légitimement répéter une clé, comme dans ?tag=a&tag=b. Aucune spécification n'indique ce que cela signifie — certains frameworks prennent la première valeur, d'autres la dernière, d'autres collectent un tableau. Le tableau ici liste chaque occurrence dans l'ordre afin que vous voyez exactement ce qui a été envoyé plutôt qu'une vue réduite.

Note open source : implémenté avec les API URL et URLSearchParams WHATWG intégrées au navigateur. Aucune bibliothèque tierce n'est utilisée.

FAQ

Pourquoi le champ du port est-il vide ?
Parce que l'URL utilise le port par défaut de son schéma. L'analyseur WHATWG omet 443 pour https et 80 pour http, car les inclure n'apporte aucune information et casserait les comparaisons d'origine.
Pourquoi le protocole inclut-il un deux-points ?
C'est ce que définit la norme des URL. La propriété protocole est 'https:' plutôt que 'https'. Si vous comparez avec un nom de schéma nu, n'oubliez pas de tenir compte du deux-points final.
Quelle est la différence entre hôte et nom d'hôte ?
Le nom d'hôte est le domaine seul. L'hôte inclut le port s'il est présent. Pour https://example.com:8443/ le nom d'hôte est example.com et l'hôte est example.com:8443.
Pourquoi ne puis-je pas analyser une URL relative ?
Une référence relative comme /about ou ../img.png n'a de sens que par rapport à une URL de base. L'analyseur exige une URL absolue avec un schéma afin que le résultat soit sans ambiguïté.
Le fragment est-il envoyé au serveur ?
Non. La partie après # n'est jamais transmise dans une requête HTTP. Elle est résolue entièrement dans le navigateur, c'est pourquoi les flux OAuth implicites s'en sont servis pour garder les jetons hors des journaux serveur.
Pourquoi mon domaine Unicode a-t-il changé ?
Les noms de domaine internationalisés sont convertis en Punycode, la forme ASCII réellement utilisée par le DNS. münchen.de devient xn--mnchen-3ya.de. C'est la même transformation que votre navigateur effectue avant de faire la requête.