fuga()
Non usarlo!
escape()
è definito nella sezione B.2.1.2 fuga e il testo introduttivo dell'allegato B dice:
... Tutte le caratteristiche del linguaggio e i comportamenti specificati in questo allegato hanno una o più caratteristiche indesiderabili e in assenza di un uso legacy verrebbero rimossi da questa specifica. ...
... I programmatori non dovrebbero usare o assumere l'esistenza di queste caratteristiche e comportamenti quando scrivono un nuovo codice ECMAScript ....
Comportamento:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape
I caratteri speciali sono codificati ad eccezione di: @ * _ + -. /
La forma esadecimale per i caratteri, il cui codice valore unitario 0xFF o meno, è una sequenza di escape due cifre: %xx
.
Per i caratteri con un'unità di codice maggiore, %uxxxx
viene utilizzato il formato a quattro cifre . Ciò non è consentito all'interno di una stringa di query (come definito in RFC3986 ):
query = *( pchar / "/" / "?" )
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded = "%" HEXDIG HEXDIG
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
Un segno di percentuale è consentito solo se è seguito direttamente da due cifre esadecimali, mentre la percentuale seguita da u
non è consentita.
encodeURI ()
Usa encodeURI quando desideri un URL funzionante. Fai questa chiamata:
encodeURI("http://www.example.org/a file with spaces.html")
ottenere:
http://www.example.org/a%20file%20with%20spaces.html
Non chiamare encodeURIComponent poiché distruggerebbe l'URL e tornerebbe
http%3A%2F%2Fwww.example.org%2Fa%20file%20with%20spaces.html
encodeURIComponent ()
Utilizzare encodeURIComponent quando si desidera codificare il valore di un parametro URL.
var p1 = encodeURIComponent("http://example.org/?a=12&b=55")
Quindi è possibile creare l'URL necessario:
var url = "http://example.net/?param1=" + p1 + "¶m2=99";
E otterrai questo URL completo:
http://example.net/?param1=http%3A%2F%2Fexample.org%2F%Ffa%3D12%26b%3D55¶m2=99
Nota che encodeURIComponent non sfugge al '
personaggio. Un bug comune è usarlo per creare attributi html come href='MyUrl'
, che potrebbero subire un bug di iniezione. Se stai costruendo html dalle stringhe, usa "
invece che '
per le virgolette degli attributi, oppure aggiungi un ulteriore livello di codifica ( '
può essere codificato come% 27).
Per ulteriori informazioni su questo tipo di codifica, è possibile consultare: http://en.wikipedia.org/wiki/Percent-encoding
encodeURIComponent("var1=value1&var2=value2")
è il tipico caso d'uso. Quell'esempio codificherà e , che probabilmente non è quello che era previsto! viene in genere applicato separatamente solo al valore in ciascuna coppia di valori chiave (la parte dopo ciascuna ).=
&
encodeURIComponent
=