Ich versuche, eine GET-Nachricht zu senden, die Zeichenfolgen mit kaufmännischem Und enthält, und kann nicht herausfinden, wie das kaufmännische Und in der URL umgangen werden kann.
Beispiel:
http://www.example.com?candy_name=M&M
result => candy_name = M
Ich habe auch versucht:
http://www.example.com?candy_name=M\&M
result => candy_name = M\\
Ich verwende URLs manuell, daher benötige ich nur die richtigen Zeichen.
Ich kann keine Bibliotheken benutzen. Wie geht das?
http
url
get
query-string
query-parameters
Tomermes
quelle
quelle
A potentially dangerous Request.Path value was detected from the client (&).
Dies gilt nicht nur für das kaufmännische Und in URLs, sondern für alle reservierten Zeichen . Einige davon sind:
Die Idee ist die gleiche wie beim Codieren von
&
in einem HTML-Dokument, aber der Kontext wurde geändert, um sich innerhalb des URI zu befinden, zusätzlich dazu, dass er sich innerhalb des HTML-Dokuments befindet. Die prozentuale Codierung verhindert also Probleme beim Parsen in beiden Kontexten.Der Ort, an dem dies sehr nützlich ist, ist, wenn Sie eine URL in eine andere URL einfügen müssen. Wenn Sie beispielsweise einen Status auf Twitter veröffentlichen möchten:
Mein Tweet enthält viele reservierte Zeichen
?'():/
, daher habe ich den gesamten Wert desstatus
URL-Parameters codiert . Dies ist auch hilfreich, wenn Siemailto:
Links verwenden, die einen Nachrichtentext oder Betreff haben, da Sie die Parameterbody
und codieren müssen, umsubject
Zeilenumbrüche, kaufmännisches Und usw. intakt zu halten.http://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters
quelle
! ' ( ) *
sind keine URL-codiert mitencodeURIComponent
.Versuchen Sie es mit
http://www.example.org?candy_name=M%26M
.Siehe auch diese Referenz und einige weitere Informationen auf Wikipedia .
quelle
Sie können das% -Zeichen verwenden, um Zeichen zu maskieren, die in URLs nicht zulässig sind. Siehe [RFC 1738].
Eine Tabelle mit ASCII-Werten unter http://www.asciitable.com/ .
Sie können sehen, dass
&
26 hexadezimal ist - Sie benötigen also M% 26M.quelle
Dies kann hilfreich sein, wenn jemand es in PHP möchte
quelle
Wenn Sie keine Bibliotheken zum Codieren des Werts verwenden können, http://www.urlencoder.org/ oder http://www.urlencode-urldecode.com/ oder ...
Geben Sie einfach Ihren Wert "M & M" ein, nicht die vollständige URL ;-)
quelle
Ich möchte einen kleinen Kommentar zur Blender-Lösung hinzufügen.
Sie können Folgendes tun:
Das gibt aus:
Das Tolle daran ist, dass es nicht nur für &, sondern für jeden besonderen Charakter funktioniert.
Zum Beispiel:
Ausgänge:
quelle
Sie können Ihre Argumente lieber mit dieser Funktion encodeURIComponent übergeben, damit Sie sich keine Gedanken über die Übergabe von Sonderzeichen machen müssen.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
quelle