Parser di URL
Scomponi qualsiasi URL nelle sue parti: protocollo, host, porta, percorso, query e frammento, con decodifica punycode degli IDN ed estrazione delle coppie di query. Funziona interamente nel tuo browser.
Cos'è un parser di URL?
Un parser di URL suddivide un Uniform Resource Locator nelle parti etichettate definite dall'RFC 3986: schema, userinfo opzionale, host (con porta opzionale), percorso, query e frammento. Ogni browser, server, proxy, CDN e link checker deve farlo internamente prima di poter instradare o riscrivere una richiesta. Vedere la scomposizione esplicita rende facile individuare bug di codifica, slash fuori posto, credenziali finite per errore negli URL e attacchi omografici tramite IDN.
Come usare questo parser
Incolla un URL nella casella. Il pannello dei componenti si aggiorna all'istante. Guarda la riga host per vedere se è in gioco il punycode (un host che inizia con xn-- è codificato in IDN), controlla la riga porta per confermare se l'URL usa quella predefinita del protocollo, e scorri la tabella dei parametri di query per vedere esattamente quali chiavi e valori arriverebbero al server. La riga URL normalizzato mostra come appare l'URL dopo che il parser del browser lo ha ripulito: schema in maiuscolo convertito in minuscolo, porta predefinita rimossa, percent-encoding sistemato.
Perché i frammenti non arrivano al server
Il frammento, la parte dopo #, è riservato allo user agent. I browser lo rimuovono prima di inviare la richiesta HTTP, ed è per questo che il server (e i tuoi access log, e i dati grezzi delle landing page nei tool di analytics) non possono vederlo. Le single-page app sfruttano questa cosa di proposito per far sembrare la navigazione istantanea: i cambi di rotta aggiornano il frammento invece di scatenare una vera richiesta di rete. Se hai bisogno che un valore arrivi al server, mettilo nella query string, non nel frammento.
Anatomia di un URL
| Parte | Esempio | Ruolo |
|---|---|---|
protocol | https: | Indica al client quale protocollo usare. |
host | shop.example.com | Il server a cui connettersi. Può essere un nome di dominio o un IP letterale. |
port | 8443 | Porta TCP. Predefinita 80 per http, 443 per https. |
path | /cart/checkout | Percorso della risorsa sul server. Inizia sempre con /. |
query | ?id=42&ref=hp | Coppie chiave/valore opzionali dopo il ?. |
fragment | #payment | Ancora lato client dopo il #. Non viene mai inviata al server. |
Domande frequenti
Questo strumento invia i miei URL da qualche parte?
URL integrato del browser; nulla viene caricato. Apri DevTools > Network e vedrai che mentre digiti non parte alcuna richiesta.Cos'è il punycode?
xn--mnchen-3ya.de. Il parser mostra entrambe le forme così puoi individuare attacchi omografici in cui un host malevolo si camuffa da brand familiare.Perché il parser mostra la userinfo se incollo un URL con credenziali?
Le chiavi di query ripetute vengono preservate?
?tag=a&tag=b mostra entrambe le righe. Come un server interpreta i duplicati dipende dal framework: PHP per default tiene l'ultimo valore, URLSearchParams di Node.js restituisce un array. Il parser non deduplica; mostra ciò che è effettivamente nell'URL.Cosa viene decodificato dal percent-encoding?
Posso analizzare URL mailto: o tel:?
URL del browser. Per mailto: l'indirizzo sta nel percorso, gli header come ?subject= compaiono come parametri di query. Per costruzioni mailto più avanzate, vedi il nostro generatore dedicato di link mailto.