# Uniform Resource Locator

Lo Uniform Resource Locator, anche noto con la sigla URL (lett. "localizzatore uniforme di risorse"), è una sequenza di caratteri che identifica univocamente l'indirizzo di una risorsa su una rete di computer, come ad esempio un documento, un'immagine, un video, tipicamente presente su un host server e resa accessibile a un client.
È perlopiù utilizzato per indicare risorse web (http), risorse recuperabili tramite protocolli di trasferimento file (ftp), condivisioni remote (smb) o accessi a sistemi esterni (ssh). La risoluzione dell'URL in indirizzo IP, necessario per l'instradamento con il protocollo IP avviene tramite DNS.

## Descrizione

La struttura di un URL è codificata nel documento RFC 3986 della IETF, scritta da Tim Berners-Lee, e si compone normalmente di sei parti, alcune delle quali opzionali:
protocollo://[username[:password]@]host[:porta][</percorso>][?querystring][#fragment]

### protocollo

    Identifica il protocollo, tipicamente di livello applicazioni, da utilizzare per l'accesso al server. I protocolli più comuni sono l'HTTP, HTTPS, FTP, MMS ecc. Se il protocollo non viene specificato, generalmente il browser utilizza il protocollo "http" come predefinito. In alcuni casi l'utente potrebbe vedere la pagina caricata con protocollo https, ma questo solo perché il web server è già stato contattato con protocollo http e ha risposto al browser con un codice di stato di reindirizzamento (3xx, di solito 301 o 302).
    Separatore tra il protocollo e il resto dell'URL: di solito l'host, o opzionalmente lo username.

### username:password@ (opzionale)

    Subito dopo il protocollo, è possibile specificare le credenziali di autenticazione (username e password) per l'accesso alla risorsa. L'autenticazione in URL è però estremamente rischiosa, in quanto le credenziali di accesso vengono inviate al server in chiaro, ovvero non cifrate.
    Inoltre questo sistema si presta a tecniche di phishing che possono indurre in errore gli utenti, conducendoli ad una destinazione completamente diversa da quella attesa. Ad esempio http://www.sitosicuro.it|searchq=wikipedia@www.truffatori.com può a prima vista sembrare l'URL di una pagina di www.sitosicuro.it, quando in realtà conduce a www.truffatori.com.
    Da diversi anni, un update del browser obsoleto Internet Explorer (832894) ha disattivato la funzione di autenticazione, rendendo inefficaci i tentativi di phishing. Altri browser come Firefox hanno mantenuto la funzione, avvertendo tuttavia l'utente del possibile tentativo di phishing.

### host

    Identifica il server su cui risiede la risorsa. Può essere rappresentato direttamente da un indirizzo IP o (più comunemente) da un nome di dominio che il software converte in indirizzo IP avvalendosi del servizio DNS.

### porta (opzionale)

    Identifica la porta del servizio di rete al quale inoltrare la richiesta. Il numero di porta può essere omesso quando corrisponde alla porta standard associata al protocollo indicato dall'URL (ad esempio 80 per HTTP o 443 per HTTPS).

### percorso (opzionale)

    Percorso (pathname) nel file system del server che identifica la risorsa (generalmente una pagina web, una immagine o un file multimediale). Se il nome del file non viene specificato, il server può essere configurato per restituire un file predefinito.

### querystring (opzionale)

    Se richiesto, al termine dell'url è possibile aggiungere una query string separandola con l'utilizzo del simbolo "?". La query string è una stringa di caratteri che consente di passare al server uno o più parametri.
    Di norma, la query string ha questo formato: [...]?parametro1=valore&parametro2=valore2.

### fragment (opzionale)

    Se presente, indica una parte o una posizione all'interno della risorsa, come la query string è possibile utilizzare più parametri, con la differenza che, essendo utilizzati dal client per sapere come muoversi all'interno di una risorsa non verranno inviati al server.
    Di norma, il fragment ha questo formato: [...]#parametro1=valore&parametro2=valore2.

## Galleria d'immagini

* URL Query
* Componenti URL