Que signifie le codage URL en termes techniques ?
Selon la norme RFC 3986, l'encodage URL signifie qu'une URL ne peut contenir que des caractères ASCII « non réservés » spécifiques, et que tout caractère ne faisant pas partie de cet ensemble autorisé doit être converti avant de pouvoir circuler en toute sécurité sur le Web.
La règle de transformation est simple :
% + deux chiffres hexadécimaux
La valeur hexadécimale représente l'octet numérique du caractère d'origine.
Pourquoi cette transformation est-elle nécessaire ?
Si les caractères ne sont pas convertis correctement :
- Les espaces interrompent le chemin d'accès de l'URL.
- Les chaînes de requête peuvent être mal divisées.
- Les symboles spéciaux peuvent être mal interprétés.
- Les serveurs peuvent renvoyer des erreurs 400 ou 404.
- Des risques de sécurité peuvent apparaître en raison de requêtes mal formées.
Lorsqu'elle est correctement appliquée, la conversion garantit :
- Communication HTTP stable.
- Analyse précise des paramètres.
- Comportement cohérent entre les navigateurs.
- Décodage fiable côté serveur.
Comment fonctionne le processus de codification étape par étape
Techniquement, ce mécanisme convertit les caractères en leur représentation hexadécimale en octets basée sur le codage ASCII ou UTF-8. Chaque octet résultant est préfixé d'un signe pourcentage.
Exemple 1 : Espace dans un chemin d'accès à un fichier
URL d'origine :
https://example.com/new page.html
L'utilisation d'espaces dans un chemin d'accès n'est pas autorisée.
Valeur du caractère espace :
- Décimal : 32
- Hexadécimal : 20
Version corrigée :
https://example.com/new%20page.html
Exemple 2 : Symboles spéciaux dans les paramètres
Original :
https://example.com/search?q=smart locker & indoor
Si & est traité comme une donnée plutôt que comme un séparateur de paramètres, il doit être codé.
Version correcte :
https://example.com/search?q=smart%20locker%20%26%20indoor
Éléments convertis :
- Espace → %20
- & → %26
Important : le symbole « & » qui sépare les paramètres doit rester inchangé.
Catégories de caractères dans les URL
Reconnaître les types de caractères permet d'éviter les transformations incorrectes.
Caractères non réservés
Ces caractères sont sûrs et peuvent rester inchangés:
|
Catégorie |
Caractères |
|
Letras |
A–Z a–z |
|
Chiffres |
0–9 |
|
Symboles |
- _ . ~ |
Exemple:
https://example.com/product-123_A
Aucune conversion n'est nécessaire.
Caractères réservés
Ces caractères définissent la structure d'une URL :
|
Caractéristique |
Fonction |
|
? |
Lancez la chaîne de consultation |
|
& |
Séparez les paramètres |
|
= |
Attribue des valeurs aux paramètres |
|
# |
Référence de fragment |
|
/ |
Séparateur de route |
|
: |
Séparateur de schéma |
Si ces symboles sont mal codés, l'adresse perd sa structure logique.
Incorrect :
https://example.com/page%3Fid%3D10
Correct :
https://example.com/page?id=10
Caractères à convertir
Les symboles suivants doivent être transformés lorsqu'ils sont utilisés comme données littérales :
- Espace
- "
- < >
- { }
- |
- \
- ^
- `
- %
Exemple avec le signe pourcentage
Original :
https://example.com/50% discount
Version sécurisée :
https://example.com/50%25%20discount
- % devient %25
- L'espace devient %20
Codage des URL dans les applications web
Dans la pratique, lorsque les développeurs définissent le codage des URL, ils font généralement référence à des données qui ont déjà été converties au format codé en pourcentage avant d'être envoyées dans une requête HTTP.
Vous trouverez ces valeurs transformées en :
- Envois de formulaires HTML.
- Appels AJAX.
- Paramètres de redirection.
- URL de suivi.
- Requêtes API REST.
Exemple : données du formulaire
L'utilisateur saisit :
John Smith & Co.
Le navigateur envoie :
John+Smith+%26+Co.
Remarque : dans le format application/x-www-form-urlencoded, les espaces sont remplacés par + au lieu de %20.
Implémentation en code
La plupart des langages de programmation fournissent des utilitaires intégrés.
Exemple en JavaScript
Codage d'un paramètre :
encodeURIComponent(« indoor locker & storage »)
Résultat :
indoor%20locker%20%26%20storage
Le décodage restaure la chaîne d'origine :
decodeURIComponent(« indoor%20locker%20%26%20storage »)
Gestion Unicode et URL multilingues
Les systèmes modernes sont basés sur UTF-8. Les caractères non ASCII sont d'abord convertis en séquences d'octets UTF-8, puis exprimés sous forme de pourcentage.
Exemple :
Original :
https://example.com/product
Converti :
https://example.com/%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82
Chaque octet UTF-8 est converti en %XX.
Ce mécanisme permet une gestion adéquate des contenus internationaux et des sites web multilingues.
Tableau de référence rapide
|
Caractères |
Décimales |
Hexadécimaux |
Codifiés |
|
Espace |
32 |
20 |
%20 |
|
! |
33 |
21 |
%21 |
|
“ |
34 |