web-dev-qa-db-fra.com

quelle est la signification et le cas d'utilisation de chaque encodage d'URL Caractères réservés

Citation de encodage en pourcentage

Lorsqu'un caractère de l'ensemble réservé (un "caractère réservé") a une signification spéciale (un "but réservé") dans un certain contexte et qu'un schéma d'URI indique qu'il est nécessaire d'utiliser ce caractère à une autre fin, le caractère doit être codé en pourcentage. Pour encoder en pourcentage un caractère réservé, il faut convertir le caractère en son octet correspondant dans ASCII, puis représenter cette valeur sous forme d'une paire de chiffres hexadécimaux.

Que signifie chacun de ces caractères dans le contexte d'un URI?

enter image description here

avec un moteur de recherche, je n'ai pas trouvé de liste ni de signification/cas d'utilisation.

4
Ivanov

Que signifie chacun de ces caractères dans le contexte d'un URI?

Notez qu'un URI est composé de plusieurs "contextes" ou parties différents . par exemple. le schéma, l'hôte, le chemin d'URL, la chaîne de requête et l'identificateur de fragment. Le caractère spécial d'un caractère réservé dépend de l'endroit où ce caractère est utilisé dans l'URL. Ces "caractères réservés" sont souvent utilisés pour délimiter des parties de l'URI. Vous n'avez besoin d'encoder ces caractères que s'ils sont en conflit avec le "sens spécial" (le cas échéant).

Certains caractères sont simplement définis comme des alternatives possibles aux autres, de sorte que leur signification peut ne pas être particulière (sur le serveur).

Je vais commencer le bal, certains dont je ne suis pas sûr:

  • ! (Point d'exclamation) - pas sûr. JavaScript n'encode pas ce caractère. Il a utilisé historiquement pour représenter AJAX URL dans l'identificateur de fragment. par exemple. #! (hash-bang) - mais c'était Google, pas un "standard".

  • # (Hash/Pound) - Délimite l'identificateur de fragment. (Dernière partie de l'URL, côté client uniquement, non transmise au serveur.)

  • $ (Dollar) - Pas sûr. Aucune signification particulière dans le chemin d'URL ou la chaîne de requête dont je suis au courant. Cependant, la encodeURIComponent() de JavaScript encodera ce caractère (contrairement à encodeURI()), ce qui implique qu'il pourrait avoir une signification particulière dans la chaîne de requête.

  • & (Esperluette) - Utilisé pour délimiter les paramètres de chaîne de requête.

  • ' (Apostrophe/guillemet simple) - Pas sûr. Aucune signification particulière dans le chemin d'URL ou la chaîne de requête. JavaScript n'encode pas ce caractère.

  • ( et ) (parenthèses/crochets) - Pas sûr. Aucune signification particulière dans le chemin d'URL ou la chaîne de requête. JavaScript ne code pas ces caractères.

  • * (Asterisk) - Pas sûr. Aucune signification particulière dans le chemin d'URL ou la chaîne de requête. JavaScript n'encode pas ce caractère.

  • + (Plus) - Peut être utilisé pour coder un espace (alternative à %20) dans la chaîne de requête uniquement. Un littéral + lorsqu'il est utilisé dans le chemin URL.

  • , (Virgule) - Une alternative à ;.

  • / (Barre oblique) - Délimite les segments de chemin dans le chemin URL.

  • : (Colon) - Délimite le schéma de l'hôte et Hôte à partir du port .

  • ; (Point-virgule) - Délimite les paramètres d'URL dans la chaîne de requête.

  • = (Equals) - Délimite les paires nom/valeur dans la chaîne de requête.

  • ? (Point d'interrogation) - Délimite le début de la chaîne de requête.

  • @ (At) - Délimite userinfo dans la partie autorité de l'URL.

  • [ et ] (crochets) - Notez bien. Ceux-ci sont utilisés par PHP pour autoriser des noms de paramètres de type tableau dans la chaîne de requête - bien que je ne pense pas que ce soit l'utilisation "officielle".

Il suffit de noter les différences entre PHP (urlencode() et rawurlencode()) et JavaScript (encodeURIComponent() et encodeURI() respectivement) lors de l’utilisation des fonctions intégrées pour encoder des parties de l'URL ... PHP encode tous les caractères "réservés", cependant, JavaScript (dans le navigateur) est beaucoup plus sélectif.

Référence supplémentaire:
RFC 3986 - Identifiant de ressource uniforme (URI): Syntaxe générique

2
MrWhite