Come codificare correttamente i parametri della query string
Lo strumento ha due modalità. Componente (encodeURIComponent) è per un singolo nome o valore di parametro; URL completo (encodeURI) è per un URL intero con una struttura già corretta. Confonderle è la causa più comune di query string non funzionanti.
Esempio svolto
La modalità URL completo lascia la & nel valore, quindi il server legge due parametri invece di uno.
- Valore di ingresso
- https://example.com/search?q=salt & pepper&page=2
- Risultato ·
encodeURI() - https://example.com/search?q=salt%20&%20pepper&page=2
Parametri letti dal server
- "q" = "salt "
- " pepper" = ""
- "page" = "2"
Codificare prima il valore in modalità Componente lo mantiene come un unico parametro.
- Valore di ingresso
- salt & pepper
- Risultato ·
encodeURIComponent() - salt%20%26%20pepper
https://example.com/search?q=salt%20%26%20pepper&page=2
Parametri letti dal server
- "q" = "salt & pepper"
- "page" = "2"
Modalità Componente e URL completo a confronto, carattere per carattere
| Carattere | Componente | URL completo |
|---|---|---|
| : | %3A | : |
| / | %2F | / |
| ? | %3F | ? |
| # | %23 | # |
| & | %26 | & |
| = | %3D | = |
| + | %2B | + |
| ␠ | %20 | %20 |
| é | %C3%A9 | %C3%A9 |
Come si comporta lo strumento
- Codifica separatamente ogni nome e valore di parametro in modalità Componente, che esegue l’escape di & = ? # + e /.
- Unisci le coppie codificate come nome=valore separate da & e aggiungi il risultato dopo il ? dell’URL.
- Usa la modalità URL completo solo su un URL intero: mantiene intatti : / ? # & = + e quindi non protegge un valore che li contiene.