Flucht()
Benutze es nicht!
escape()
ist in Abschnitt B.2.1.2 Flucht definiert und der Einführungstext von Anhang B lautet:
... Alle in diesem Anhang angegebenen Sprachmerkmale und -verhalten weisen ein oder mehrere unerwünschte Merkmale auf, und wenn keine ältere Verwendung verwendet wird, werden sie aus dieser Spezifikation entfernt. ...
... Programmierer sollten diese Funktionen und Verhaltensweisen beim Schreiben von neuem ECMAScript-Code nicht verwenden oder annehmen.
Verhalten:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape
Sonderzeichen werden mit Ausnahme von: @ * _ + - codiert. /
Die hexadezimale Form für Zeichen, deren Codeeinheitswert 0xFF oder weniger beträgt, ist eine zweistellige Escape-Sequenz : %xx
.
Für Zeichen mit einer größeren Codeeinheit wird das vierstellige Format %uxxxx
verwendet. Dies ist in einer Abfragezeichenfolge (wie in RFC3986 definiert ) nicht zulässig :
query = *( pchar / "/" / "?" )
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded = "%" HEXDIG HEXDIG
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
Ein Prozentzeichen ist nur zulässig, wenn direkt zwei Hexdigits folgen, Prozent gefolgt von u
nicht.
encodeURI ()
Verwenden Sie encodeURI, wenn Sie eine funktionierende URL wünschen. Rufen Sie an:
encodeURI("http://www.example.org/a file with spaces.html")
bekommen:
http://www.example.org/a%20file%20with%20spaces.html
Rufen Sie encodeURIComponent nicht auf, da dies die URL zerstören und zurückkehren würde
http%3A%2F%2Fwww.example.org%2Fa%20file%20with%20spaces.html
encodeURIComponent ()
Verwenden Sie encodeURIComponent, wenn Sie den Wert eines URL-Parameters codieren möchten.
var p1 = encodeURIComponent("http://example.org/?a=12&b=55")
Dann können Sie die URL erstellen, die Sie benötigen:
var url = "http://example.net/?param1=" + p1 + "¶m2=99";
Und Sie erhalten diese vollständige URL:
http://example.net/?param1=http%3A%2F%2Fexample.org%2F%Ffa%3D12%26b%3D55¶m2=99
Beachten Sie, dass encodeURIComponent dem '
Zeichen nicht entgeht . Ein häufiger Fehler besteht darin, damit HTML-Attribute zu erstellen, z. B. href='MyUrl'
die einen Injektionsfehler verursachen können. Wenn Sie HTML aus Zeichenfolgen erstellen , verwenden Sie entweder "
anstelle von '
Attributanführungszeichen oder fügen Sie eine zusätzliche Codierungsebene hinzu ( '
kann als% 27 codiert werden).
Weitere Informationen zu dieser Art der Codierung finden Sie unter: http://en.wikipedia.org/wiki/Percent-encoding
encodeURIComponent("var1=value1&var2=value2")
ist nicht der typische Anwendungsfall. Dieses Beispiel wird das=
und codieren&
, was wahrscheinlich nicht beabsichtigt ist!encodeURIComponent
wird normalerweise separat nur auf den Wert in jedem Schlüsselwertpaar (dem Teil nach jedem=
) angewendet .