URI: spiegazione dell’Uniform Resource Identifier
La maggior parte delle persone ha familiarità con il concetto di URL, gli indirizzi utilizzati per accedere ai siti web su Internet. Che cos’è invece un URI? Il concetto di URI è stato concepito dal padre del World Wide Web, Tim Berners-Lee. Quando egli ha usato per la prima volta il termine in RFC 1630, ha parlato di Universal Resource Identifier. Successivamente, in seguito alle pubblicazioni del Word Wide Web Consortium (W3C), l’URI si è affermato come acronimo di Uniform Resource Identifier ed è ancora oggi inteso come tale. Il concetto in sé non è cambiato.
Che cos’è l’Uniform Resource Identifier?
Gli Uniform Resource Identifier (URI) sono creati per accedere a risorse fisiche o astratte su Internet, che possono essere di vario tipo a seconda della situazione: siti web, mittenti o destinatari di e-mail. Le applicazioni utilizzano l’identificazione univoca per interagire con una risorsa o per recuperarne i dati.
In questo contesto vengono utilizzati protocolli come HTTP o FTP dove la forma di indirizzamento è determinata dalla sintassi degli URI che consente al sistema di identificare tutte le informazioni necessarie per accedere alla risorsa.
La sintassi degli URI
Un URI può essere composto fino a un massimo di cinque parti, di cui solo due sono obbligatorie.
- schema: fornisce informazioni sul protocollo utilizzato.
- autorità: identifica il dominio.
- percorso: mostra il percorso della risorsa.
- query: rappresenta la richiesta.
- frammento: indica un aspetto parziale di una risorsa.
Solo schema e percorso devono essere obbligatoriamente presenti in un identificatore. Nella sintassi dell’URI tutti i componenti sono elencati uno dopo l’altro e separati da caratteri specifici e definiti.
scheme :// authority path ? query # fragment
Il doppio slash dopo i primi due punti è necessario solo se è indicata l’autorità. Inoltre, l’autorità può contenere informazioni sull’utente, separate dal dominio dal segno @, e terminare con un’informazione sulla porta, separata dal dominio dai due punti.
Prendiamo come esempio un comune indirizzo web: "https://example.org/test/test1?search=test-question#part2".
- schema: http
- autorità: example.org
- percorso: test/test1
- query: search=test-question
- frammento: part2
Nell’esempio l’URI fa riferimento a una parte di un sito web. La parte in questione (part2) è accessibile via HTTP, si trova su un dispositivo con l’identificatore example.org e, volendo fare una ricerca, può essere trovata sotto il percorso specificato. L’Uniform Resource Identifier può essere utilizzato anche per l’accesso a un indirizzo di posta elettronica:
- schema: mailto
- percorso: user@example.org
In questo caso troviamo soltanto i due componenti obbligatori. Altre possibili risorse che possono essere indirizzate tramite questa sintassi sono, ad esempio, file o numeri di telefono.
Il percorso è una voce obbligatoria dell’URI, ma il contenuto può essere vuoto. Quindi “http://example.org/” è un URI valido con percorso vuoto.
Gli schemi URI, cioè la prima parte di ogni URI, sono gestiti da IANA. È possibile utilizzare degli schemi personalizzati, ma quelli confermati dall’organizzazione sono noti in tutta la rete. Gli schemi più noti sono:
- about: informazioni del browser
- data: dati incorporati
- feed: web feed
- file: file
- ftp: File Transfer Protocol
- git: controllo di versione Git
- http: Hypertext Transfer Protocol
- https: Hypertext Transfer Protocol Secure
- imap: Internet Message Access Protocol
- mailto: indirizzi e-mail
- news: Usenet-Newsgroup
- pop: POP3
- rsync: sincronizzazione dei dati
- sftp: SSH File Transfer Protocol
- ssh: Secure Shell
- tel: numeri di telefono
- urn: Uniform Resource Names
IANA pubblica una lista ufficiale di tutti gli schemi URI.
URI assoluti e URI relativi
Per evitare di dover scrivere (e salvare) l’intera dicitura di un URI alcune applicazioni usano una versione più breve della sintassi. Affinché la forma abbreviata sia compresa correttamente, deve sempre esserci un URI di base completo. Il riferimento all’URI di base è poi risolto internamente. Si distingue, dunque, tra URI assoluti e URI relativi. L’URI assoluto funziona indipendentemente dal contesto e consiste almeno di schema, autorità e percorso. Il riferimento relativo è la forma abbreviata che si limita a indicare solo la deviazione dall’URI di base. Un URI relativo deve essere sempre nello stesso spazio di nomi dell’URI di base.
Nell’URI relativo manca sicuramente la parte schema. Per poter distinguere gli URI relativi da quelli assoluti nel primo segmento di un percorso non troveremo mai i due punti, perché la parte verrebbe altrimenti interpretata come schema. Ci sono tre diversi modi per sapere se ci troviamo di fronte ad un URI relativo a seconda di come inizia il percorso:
- Il percorso di un URI relativo inizia senza slash.
- Il percorso di un URI assoluto inizia con un doppio slash.
- Il percorso di rete inizia con due backslash.
URI vs URL vs URN
C'è spesso grande confusione su abbreviazioni molto simili, quali URI, URL o URN. Per di più, tutti e tre i termini sono tecnicamente correlati. L’Uniform Resource Locator è usato per indicare dove si trova una risorsa. Pertanto, l’URL viene utilizzato anche quando si naviga in Internet per raggiungere determinate pagine web. Al contrario, l’Uniform Resource Name è indipendente dal luogo e designa una risorsa in maniera univoca. Se gli URL sono noti principalmente sotto forma di indirizzi web, un URN può anche presentarsi come ISBN, per identificare ad esempio un libro.
URL e URN seguono la sintassi degli URI; sono quindi dei sottoinsiemi degli URI. Se da un lato possiamo affermare che URL e URN sono sempre URI, non possiamo dire il contrario.