Altro
Codificare l'URL in JavaScript?
Come si codifica in modo sicuro un URL usando JavaScript in modo che possa essere messo in una stringa GET?
var myUrl = "http://example.com/index.html?param=1&anotherParam=2";
var myOtherUrl = "http://example.com/index.html?url=" + myUrl;
Suppongo che tu debba codificare la variabile myUrl
in quella seconda linea?
2385
3
Controlla la funzione integrata encodeURIComponent(str) e encodeURI(str).
Nel tuo caso, questo dovrebbe funzionare:
Avete tre opzioni:
escape()
non codifica:@*/+
encodeURI()
non codifica:~!@#$&*()=:/,;?+'
encodeURIComponent()
non codifica:~!*()'
Ma nel tuo caso, se vuoi passare un URL in un parametro
GET
di un'altra pagina, dovresti usareescape
oencodeURIComponent
, ma nonencodeURI
.Vedi la domanda di Stack Overflow Best practice: escape, o encodeURI / encodeURIComponent per ulteriori discussioni.
Continuate con
encodeURIComponent()
. La funzioneencodeURI()
non si preoccupa di codificare molti caratteri che hanno importanza semantica negli URL (ad esempio "#", "?", e "&").escape()
è deprecato, e non si preoccupa di codificare i caratteri "+", che saranno interpretati come spazi codificati sul server (e, come sottolineato da altri qui, non codifica correttamente i caratteri non-ASCII negli URL).C'è una bella spiegazione della differenza tra
encodeURI()
eencodeURIComponent()
altrove. Se si vuole codificare qualcosa in modo che possa essere incluso in modo sicuro come componente di un URI (ad esempio come parametro di una stringa di query), si vuole usareencodeURIComponent()
.