Encodage, décodage et analyse d’URL

Encodez et décodez des URL, et découpez-les en parties.

À propos de cet outil

Encodez du texte en pourcent pour une URL, décodez-le, ou décomposez une URL complète en protocole, hôte, chemin, paramètres de requête et fragment, avec chaque paramètre décodé.

Mode d’emploi

  1. Choisissez Analyser l’URL pour découper un lien en ses différentes parties, ou Encoder / Décoder pour l’encodage-pourcent.
  2. Collez une URL ou du texte.
  3. En mode Analyser, lisez le protocole, l’hôte, le chemin et chaque paramètre de requête, déjà décodés.
  4. Copiez la partie dont vous avez besoin.

Questions

Quelle est la différence entre encodeURI et encodeURIComponent ?
encodeURIComponent échappe tout ce qui a une signification dans une URL, y compris / ? & et =, utilisez-le donc pour la valeur d’un seul paramètre. encodeURI conserve ces caractères pour qu’une URL complète reste utilisable. L’option Conserver permet de basculer de l’un à l’autre.
Pourquoi une espace s’écrit-elle tantôt + et tantôt %20 ?
Dans les chaînes de requête issues de formulaires HTML, une espace s’écrit + ; ailleurs dans une URL, c’est %20. Activez « Traiter + comme une espace » pour décoder des données de formulaire.
Que signifie « séquence d’encodage-pourcent incomplète » ?
Un % doit être suivi de deux chiffres hexadécimaux, et les caractères multi-octets ont besoin de tous leurs octets. Un texte coupé au milieu d’une séquence d’échappement, comme %E2%82, ne peut pas être décodé.
Le chemin d’une URL doit-il être encodé différemment de la query string ?
Les règles sont globalement les mêmes, à deux différences près. Dans le chemin, / sépare les segments : encodez donc chaque segment séparément, et une barre oblique à l’intérieur d’un nom devient %2F. Par ailleurs, + est un plus littéral dans le chemin, alors que les query strings encodées comme des formulaires le lisent comme une espace.
Quelle longueur maximale pour une URL ?
Les normes ne fixent aucune limite, mais il existe des limites pratiques. Les navigateurs gèrent des URL très longues, tandis que les serveurs, proxys et CDN plafonnent souvent la ligne de requête à environ 8 KB et répondent 414 URI Too Long. Gardez vos URL sous 2 000 caractères environ et envoyez les données volumineuses dans le corps d’une requête POST.
Peut-on mettre des tokens ou des adresses e-mail dans une URL sans risque ?
Évitez-le. Les URL finissent dans les journaux des serveurs et des proxys, dans l’historique du navigateur et dans l’en-tête Referer envoyé aux autres sites. L’encodage pourcent ne cache rien, puisque n’importe qui peut le décoder. Envoyez plutôt les tokens dans un en-tête Authorization et les données personnelles dans le corps d’une requête POST.

Qu’est-ce que l’encodage URL (encodage pourcent) ?

L’encodage URL, ou encodage pourcent, remplace les caractères interdits ou ayant une signification particulière dans une URL par un signe % suivi de deux chiffres hexadécimaux. Une espace devient %20, & devient %26 et / devient %2F. Les règles viennent de la RFC 3986, qui liste les caractères non réservés qui n’ont jamais besoin d’être encodés : les lettres ASCII, les chiffres, et - . _ ~. Tout le reste peut devoir être échappé, selon la partie de l’URL où il apparaît.

Le texte non ASCII est d’abord converti en octets UTF-8, et chaque octet est encodé séparément. C’est pourquoi « é » devient %C3%A9 et l’emoji fusée devient quatre séquences, %F0%9F%9A%80. Lors du décodage, tous les octets d’un caractère doivent être présents. Cet outil utilise les fonctions standard encodeURIComponent, encodeURI et decodeURIComponent de votre navigateur : les résultats d’encodage et de décodage correspondent donc à ce que produit du code JavaScript.

Comment analyser une URL et lire ses paramètres de requête ?

Le mode Analyser l’URL découpe un lien selon les parties définies par la norme URL : protocole, nom d’utilisateur, hôte, port, chemin, requête, fragment et origine, chacune avec son propre bouton de copie. La query string est découpée en paires nom-valeur, chaque valeur étant décodée : ?q=running%20shoes s’affiche donc running shoes. Si un paramètre apparaît plusieurs fois, comme color=black&color=white, chaque occurrence a sa propre ligne.

L’analyseur a besoin d’une URL complète avec le schéma : example.com/path échoue alors que https://example.com/path fonctionne. Un mot de passe présent dans l’URL est masqué dans le tableau des parties. Dans du code, la même analyse est disponible avec new URL(link) et url.searchParams dans les navigateurs et Node.js, ou avec urllib.parse en Python. Quand le lien provient d’une commande curl, le Générateur et convertisseur de commandes curl transforme toute la requête en fetch ou en Python.

Pourquoi mon URL ne fonctionne-t-elle pas ? Les erreurs d’encodage courantes

Le bug classique consiste à construire une URL en concaténant des valeurs brutes. Un terme de recherche comme R&D envoyé sous la forme ?q=R&D devient q=R plus un second paramètre vide nommé D. Encodez chaque valeur séparément avec encodeURIComponent, ou laissez URLSearchParams construire la query string pour vous. Ne passez jamais une URL entière dans encodeURIComponent, car il échappe aussi les deux-points et les barres obliques dont l’URL a besoin pour fonctionner.

Le bug inverse est le double encodage. Une valeur encodée deux fois transforme % en %25 : une espace devient %2520 et se lit encore %20 après un seul décodage. Si vous voyez %25 dans une URL, décodez une fois et vérifiez si le résultat contient encore des séquences d’échappement. Attention aussi au signe plus : dans une query string, il est souvent lu comme une espace, donc encodez un + littéral en %2B.

Quelque chose ne fonctionne pas, ou un résultat semble faux ? Signaler un problème avec cet outil