Pourquoi les URL nécessitent un codage de caractères spécial

Les URL sont transmises sur des réseaux utilisant le protocole HTTP. La spécification HTTP (et son prédécesseur, les normes de protocole Internet) restreint les URL à un sous-ensemble de caractères US-ASCII, en particulier les caractères dont les valeurs d'octet sont comprises entre 0x21 et 0x7E.
Les caractères en dehors de cette plage, notamment les espaces, les caractères accentués (é, ñ, ü), les caractères chinois/japonais/coréens et de nombreux symboles, ne sont pas sécurisés dans les URL sans encodage.
Pourquoi des espaces en particulier ? HTTP utilise des espaces comme délimiteur entre la méthode, l'URL et la version du protocole dans la ligne de requête :
GET /search?q=hello world HTTP/1.1Le serveur considère "hello" comme la fin de l'URL et "world" comme une partie non valide de la chaîne de version HTTP. L'URL est incorrecte.
La solution : Le codage en pourcentage (défini dans la RFC 3986) convertit les caractères non sécurisés en une notation sécurisée %XX où XX est la valeur de l'octet hexadécimal.
Fonctionnement du codage en pourcentage


Chaque caractère en UTF-8 comporte un à quatre octets. L'encodage en pourcentage convertit chaque octet en % suivi de deux chiffres hexadécimaux :
| Personnage | UTF-8 Octet | Pourcentage codé |
|---|---|---|
| Espace | 0x20 | %20 |
| # | 0x23 | %23 |
| & | 0x26 | %26 |
| = | 0x3D | %3D |
| / | 0x2F | %2F |
| é | 0xC3 0xA9 | %C3%A9 |
| 中 | 0xE4 0xB8 0xAD | %E4%B8%AD |
Une URL contenant des caractères chinois tels que https://example.com/搜索 devient : https://example.com/%E6%90%9C%E7%B4%A2
Caractères réservés et personnages non réservés

Caractères non réservés (ne jamais les coder) : A-Z a-z 0-9 - _ . ~ Ceux-ci sont sécurisés dans tous les contextes d'URL et doivent toujours apparaître non codés.
Caractères réservés (encodés lorsqu'ils sont utilisés comme données et non comme délimiteurs) : : / ? # [ ] @ ! $ & ' ( ) * + , ; = Ces caractères ont une signification particulière dans les URL. Encodez-les lorsqu'ils apparaissent sous forme de données littérales dans la valeur d'un paramètre de requête.
Exemple : URL de requête de recherche :
https://example.com/search?q=cats&dogs
Ceci est ambigu : la requête est-elle "chats" ou "chats et chiens" ? Avec encodage :
https://example.com/search?q=cats%26dogsL'esperluette est désormais codée sous forme de données, et non comme séparateur de paramètre de requête.
Encodage et décodage d'URL sur ToolDolfen

- Ouvrez l'Encodeur et Décodeur d’URL.
- Pour encoder : Collez une URL ou un composant d'URL contenant des caractères spéciaux. Cliquez sur Encoder.
- Pour décoder : Collez une URL ou une chaîne codée en pourcentage pour voir l'original lisible par l'homme.
L'outil gère à la fois les URL complètes et les composants d'URL (valeurs de paramètres de requête individuels). Pour le codage URL complet, seuls les caractères non réservés sont codés ; pour le codage des composants, les caractères réservés sont également codés.
Guides complémentaires recommandés
Explorez les didacticiels et utilitaires complémentaires de ce groupe de sujets pour améliorer votre flux de travail numérique :