La maggior parte delle persone ha fa­mi­lia­ri­tà con il concetto di URL, gli indirizzi uti­liz­za­ti 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 Iden­ti­fier. Suc­ces­si­va­men­te, in seguito alle pub­bli­ca­zio­ni del Word Wide Web Con­sor­tium (W3C), l’URI si è affermato come acronimo di Uniform Resource Iden­ti­fier ed è ancora oggi inteso come tale. Il concetto in sé non è cambiato.

Che cos’è l’Uniform Resource Iden­ti­fier?

Gli Uniform Resource Iden­ti­fier (URI) sono creati per accedere a risorse fisiche o astratte su Internet, che possono essere di vario tipo a seconda della si­tua­zio­ne: siti web, mittenti o de­sti­na­ta­ri di e-mail. Le ap­pli­ca­zio­ni uti­liz­za­no l’iden­ti­fi­ca­zio­ne univoca per in­te­ra­gi­re con una risorsa o per re­cu­pe­rar­ne i dati.

In questo contesto vengono uti­liz­za­ti pro­to­col­li come HTTP o FTP dove la forma di in­di­riz­za­men­to è de­ter­mi­na­ta dalla sintassi degli URI che consente al sistema di iden­ti­fi­ca­re tutte le in­for­ma­zio­ni ne­ces­sa­rie 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 ob­bli­ga­to­rie.

  • schema: fornisce in­for­ma­zio­ni sul pro­to­col­lo uti­liz­za­to.
  • autorità: iden­ti­fi­ca il dominio.
  • percorso: mostra il percorso della risorsa.
  • query: rap­pre­sen­ta la richiesta.
  • frammento: indica un aspetto parziale di una risorsa.

Solo schema e percorso devono essere ob­bli­ga­to­ria­men­te presenti in un iden­ti­fi­ca­to­re. Nella sintassi dell’URI tutti i com­po­nen­ti 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 è ne­ces­sa­rio solo se è indicata l’autorità. Inoltre, l’autorità può contenere in­for­ma­zio­ni sull’utente, separate dal dominio dal segno @, e terminare con un’in­for­ma­zio­ne 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 ri­fe­ri­men­to a una parte di un sito web. La parte in questione (part2) è ac­ces­si­bi­le via HTTP, si trova su un di­spo­si­ti­vo con l’iden­ti­fi­ca­to­re example.org e, volendo fare una ricerca, può essere trovata sotto il percorso spe­ci­fi­ca­to. L’Uniform Resource Iden­ti­fier può essere uti­liz­za­to anche per l’accesso a un indirizzo di posta elet­tro­ni­ca:

  • schema: mailto
  • percorso: user@example.org

In questo caso troviamo soltanto i due com­po­nen­ti ob­bli­ga­to­ri. Altre possibili risorse che possono essere in­di­riz­za­te tramite questa sintassi sono, ad esempio, file o numeri di telefono.

N.B.
Il percorso è una voce ob­bli­ga­to­ria 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 uti­liz­za­re degli schemi per­so­na­liz­za­ti, ma quelli con­fer­ma­ti dall’or­ga­niz­za­zio­ne sono noti in tutta la rete. Gli schemi più noti sono:

  • about: in­for­ma­zio­ni del browser
  • data: dati in­cor­po­ra­ti
  • 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: sin­cro­niz­za­zio­ne dei dati
  • sftp: SSH File Transfer Protocol
  • ssh: Secure Shell
  • tel: numeri di telefono
  • urn: Uniform Resource Names
Consiglio

URI assoluti e URI relativi

Per evitare di dover scrivere (e salvare) l’intera dicitura di un URI alcune ap­pli­ca­zio­ni usano una versione più breve della sintassi. Affinché la forma ab­bre­via­ta sia compresa cor­ret­ta­men­te, deve sempre esserci un URI di base completo. Il ri­fe­ri­men­to all’URI di base è poi risolto in­ter­na­men­te. Si distingue, dunque, tra URI assoluti e URI relativi. L’URI assoluto funziona in­di­pen­den­te­men­te dal contesto e consiste almeno di schema, autorità e percorso. Il ri­fe­ri­men­to relativo è la forma ab­bre­via­ta che si limita a indicare solo la de­via­zio­ne dall’URI di base. Un URI relativo deve essere sempre nello stesso spazio di nomi dell’URI di base.

Nell’URI relativo manca si­cu­ra­men­te la parte schema. Per poter di­stin­gue­re gli URI relativi da quelli assoluti nel primo segmento di un percorso non troveremo mai i due punti, perché la parte verrebbe al­tri­men­ti in­ter­pre­ta­ta 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 con­fu­sio­ne su ab­bre­via­zio­ni molto simili, quali URI, URL o URN. Per di più, tutti e tre i termini sono tec­ni­ca­men­te correlati. L’Uniform Resource Locator è usato per indicare dove si trova una risorsa. Pertanto, l’URL viene uti­liz­za­to anche quando si naviga in Internet per rag­giun­ge­re de­ter­mi­na­te pagine web. Al contrario, l’Uniform Resource Name è in­di­pen­den­te dal luogo e designa una risorsa in maniera univoca. Se gli URL sono noti prin­ci­pal­men­te sotto forma di indirizzi web, un URN può anche pre­sen­tar­si come ISBN, per iden­ti­fi­ca­re ad esempio un libro.

URL e URN seguono la sintassi degli URI; sono quindi dei sot­toin­sie­mi degli URI. Se da un lato possiamo affermare che URL e URN sono sempre URI, non possiamo dire il contrario.

Vai al menu prin­ci­pa­le