J'essaie d'envoyer un message GET qui contient des chaînes avec esperluette et je n'arrive pas à comprendre comment échapper à l'esperluette dans l'URL.
Exemple:
http://www.example.com?candy_name=M&M
result => candy_name = M
J'ai aussi essayé:
http://www.example.com?candy_name=M\&M
result => candy_name = M\\
J'utilise des URL manuellement, j'ai donc juste besoin des bons caractères.
Je ne peux utiliser aucune bibliothèque. Comment ceci peut être fait?
http
url
get
query-string
query-parameters
tomermes
la source
la source
A potentially dangerous Request.Path value was detected from the client (&).
Cela ne s'applique pas seulement à l'esperluette dans les URL, mais à tous les caractères réservés . Certains comprennent:
L'idée est la même que l'encodage d'un
&
dans un document HTML, mais le contexte a changé pour être dans l'URI, en plus d'être dans le document HTML. Ainsi, l'encodage en pourcentage empêche les problèmes d'analyse syntaxique à l'intérieur des deux contextes.L'endroit où cela est très utile est lorsque vous devez mettre une URL à l'intérieur d'une autre URL. Par exemple, si vous souhaitez publier un statut sur Twitter:
Il y a beaucoup de caractères réservés dans mon Tweet, à savoir
?'():/
, j'ai donc encodé toute la valeur dustatus
paramètre URL. Cela est également utile lorsque vous utilisez desmailto:
liens qui ont un corps ou un objet de message, car vous devez coder les paramètresbody
etsubject
pour conserver les sauts de ligne, les esperluettes, etc.http://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters
la source
! ' ( ) *
ne sont pas codés URL en utilisantencodeURIComponent
.Essayez d'utiliser
http://www.example.org?candy_name=M%26M
.Voir aussi cette référence et quelques informations supplémentaires sur Wikipedia .
la source
Vous pouvez utiliser le caractère% pour «échapper» les caractères qui ne sont pas autorisés dans les URL. Voir [RFC 1738].
Un tableau des valeurs ASCII sur http://www.asciitable.com/ .
Vous pouvez voir
&
est 26 en hexadécimal - vous avez donc besoin de M% 26M.la source
Cela peut aider si quelqu'un le veut en PHP
la source
Si vous ne pouvez utiliser aucune bibliothèque pour coder la valeur, http://www.urlencoder.org/ ou http://www.urlencode-urldecode.com/ ou ...
Entrez simplement votre valeur "M&M", pas l'URL complète ;-)
la source
Je voudrais ajouter un commentaire mineur sur la solution Blender.
Vous pouvez effectuer les opérations suivantes:
Cela génère:
La grande chose à ce sujet, cela ne fonctionne pas seulement pour & mais pour tout personnage spécial.
Par exemple:
Les sorties:
la source
Vous pouvez plutôt passer vos arguments en utilisant cette fonction encodeURIComponent afin de ne pas avoir à vous soucier de passer des caractères spéciaux.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
la source