Qual è la differenza tra un URI, un URL e un URN?


4366

Le persone parlano di URL , URI e URN come se fossero cose diverse, ma sembrano uguali a occhio nudo.

Quali sono le differenze distinguibili tra loro?


158
L'URL è più specifico dell'URI.
MK 12,

30
Tor i webmaster affrontano questa domanda: qual è la differenza tra URI e URL
hippietrail,

162
Diagramma Mini Venn:( URIs ( URLs ) )
icc97,

30
Sembra esserci ancora molta confusione su URI vs URL, anche da parte di coloro che hanno tentato di rispondere alla domanda. Sarebbe vantaggioso per tutti vedere esempi pratici di URL che non sono URI, esempi di URI che non sono URL ed esempi che sono URL e URI.
Dennis,

30
Kathy: "È il tuo cane?" Bob: "Sarebbe più corretto chiamarlo canino". Kathy: "No, è un cane. Tu, signore, sei un pedante."
Yojimbo,

Risposte:


1747

Da RFC 3986 :

Un URI può essere ulteriormente classificato come localizzatore, nome o entrambi. Il termine "Uniform Resource Locator" (URL) si riferisce al sottoinsieme di URI che, oltre a identificare una risorsa, forniscono un mezzo per localizzare la risorsa descrivendone il meccanismo di accesso primario (ad esempio, la "posizione" della rete). Il termine "Uniform Resource Name" (URN) è stato storicamente usato per riferirsi ad entrambi gli URI nell'ambito dello schema "urna" [RFC2141] , che sono tenuti a rimanere globalmente univoci e persistenti anche quando la risorsa cessa di esistere o diventa non disponibile, e a qualsiasi altro URI con le proprietà di un nome.

Quindi tutti gli URL sono URI (in realtà non del tutto - vedi sotto) e tutti gli URN sono URI - ma gli URN e gli URL sono diversi, quindi non si può dire che tutti gli URI siano URL.

EDIT: in precedenza avevo pensato che tutti gli URL fossero URI validi, ma come da commenti:

Non "tutti gli URL sono URI". Dipende dall'interpretazione della RFC. Ad esempio in Java il parser URI non piace [o ]ed è perché la specifica dice "non dovrebbe" e non "non deve".

In tal modo, purtroppo, le acque si confondono ulteriormente.

Se non hai già letto la risposta di Roger Pate , ti consiglierei di farlo.


15
Solo gli URI con l'urna: schema sono URN. Un URI potrebbe essere un URL classico, un URN o solo un URI che non inizia con "urna:" e non fa riferimento a una posizione di una risorsa.
Mark Cidade,

18
Non " tutti gli URL sono URI ". Dipende dall'interpretazione della RFC. Ad esempio in Java il parser URI non piace [o ]ed è perché la specifica dice "non dovrebbe" e non "non deve".
Adam Gent,

5
@AdamGent: RFC 3986 1.1.3: "Un URI può essere ulteriormente classificato come localizzatore, nome o entrambi." Quindi, se l'URL è un tipo speciale di URI, significa che ogni URL è un URI. No?
Hubert,

14
@AdamGent: sembra una stranezza dell'implementazione Java e non normativa. Il java.net.URIdocumento stesso dice "ogni URL è un URI, in senso astratto, ma non ogni URI è un URL". E java.net.URLfa cose strane come il controllo dell'uguaglianza degli URL risolvendo i nomi host in indirizzi IP (che sembra in contrasto con RFC 3986 sec 6 in primo luogo e interrompe gli host virtuali). Penso che questo significhi solo che la libreria standard Java ha un comportamento incoerente della classe.
Andrew Janke,

3
@JonSkeet Forse devi solo distinguere tra standard e implementazioni? Ad esempio "Formalmente, secondo gli RFC, tutti gli URL sono URI. (Estratto RFC.) Ma le implementazioni esistenti potrebbero non corrispondere esattamente alle specifiche, possibilmente per l'interoperabilità, e potrebbero usare URL non validi per gli RFC. E poiché è un'area complicata , alcune persone e alcuni documenti potrebbero utilizzare "URL" per indicare qualcosa di diverso dall'oggetto specificato dalla RFC ". Un po 'come il modo in cui la maggior parte delle routine di validazione e-mail non corrispondono alle definizioni RFC.
Andrew Janke,

3842

URI identifica e URL trova ; tuttavia, anche i localizzatori sono identificatori , quindi ogni URL è anche un URI, ma ci sono URI che non sono URL.

Esempi

  • Roger Pate

Questo è il mio nome, che è un identificatore. È come un URI, ma non può essere un URL, in quanto non ti dice nulla sulla mia posizione o su come contattarmi. In questo caso capita anche di identificare almeno altre 5 persone negli Stati Uniti da sole.

  • 4914 West Bay Street, Nassau, Bahamas

Questo è un localizzatore, che è un identificatore per quella posizione fisica. È come un URL e un URI (poiché tutti gli URL sono URI) e mi identifica indirettamente come "residente di ..". In questo caso mi identifica in modo univoco, ma ciò cambierebbe se ottengo un compagno di stanza.

Dico "mi piace" perché questi esempi non seguono la sintassi richiesta.

Confusione popolare

Da Wikipedia :

Nell'informatica, un Uniform Resource Locator (URL) è un sottoinsieme dell'Uniform Resource Identifier (URI) che specifica dove è disponibile una risorsa identificata e il meccanismo per recuperarla. Nell'uso popolare e in molti documenti tecnici e discussioni verbali viene spesso erroneamente usato come sinonimo di URI , ... [enfasi mia]

A causa di questa confusione comune, molti prodotti e documentazione utilizzano erroneamente un termine anziché l'altro, assegnano la propria distinzione o li usano in modo sinonimo.

URN

Il mio nome, Roger Pate, potrebbe essere come un URN (Uniform Resource Name), tranne per il fatto che quelli sono molto più regolamentati e intendono essere unici sia nello spazio che nel tempo.

Poiché attualmente condivido questo nome con altre persone, non è univoco a livello globale e non sarebbe appropriato come URN. Tuttavia, anche se nessun'altra famiglia ha usato questo nome, mi prende il nome da mio nonno paterno, quindi non sarebbe comunque unico nel tempo. E anche se quello non era il caso, la possibilità di nominare i miei discendenti dopo di me fanno di questo inadatto come un URN.

Gli URN sono diversi dagli URL in questo rigido vincolo di unicità, anche se entrambi condividono la sintassi degli URI.


3
URNs are different from URLs in this rigid uniqueness constraintQuesto significa che gli URL non identificano in modo univoco un luogo?
Eugene,

30
La risposta di Roger offre buoni consigli pragmatici. Per la risposta ufficiale vado al W3C che ha pubblicato " URI, URL e URN: chiarimenti e raccomandazioni " nel 2001. In breve, il W3C afferma che l'opinione contemporanea è che tutto è un URI. L'URL è un concetto informale, non formale. E la confusione risale a una "visione classica" che ha cercato di distinguere rigidamente tra le categorie di URI (di cui l'URL era una categoria).
netjeff,

5
..a Uniform Resource Locator (URL) .. specifica dove è disponibile una risorsa identificata e il meccanismo per recuperarla . Quindi, in altre parole, non esiste un URL "relativo"?
Arne,

9
"Earth128: Edward-de-Leau / 6000000000569063853" (l'unicità su più multiverso) è un URN, un URL o un URI?
Edelwater,

6
@edelwater: suppongo che sia un urì in quanto ti identifica solo ma non dice nulla su come raggiungerti, a meno che tu non intenda che earth128 sia un mezzo di viaggio inter-planetario :)
user20358

671

URI - Identificatore di risorsa uniforme

Gli URI sono uno standard per identificare i documenti utilizzando una breve stringa di numeri, lettere e simboli. Sono definiti da RFC 3986 - Uniform Resource Identifier (URI): sintassi generica . URL, URN e URC sono tutti i tipi di URI.

URL - Uniform Resource Locator

Contiene informazioni su come recuperare una risorsa dalla sua posizione. Per esempio:

  • http://example.com/mypage.html
  • ftp://example.com/download.zip
  • mailto:user@example.com
  • file:///home/user/file.txt
  • tel:1-888-555-5555
  • http://example.com/resource?foo=bar#fragment
  • /other/link.html (Un URL relativo, utile solo nel contesto di un altro URL)

Gli URL iniziano sempre con un protocollo ( http) e di solito contengono informazioni come il nome host della rete ( example.com) e spesso un percorso del documento ( /foo/mypage.html). Gli URL possono avere parametri di query e identificatori di frammenti.

URN - Nome risorsa uniforme

Identifica una risorsa con un nome univoco e persistente, ma non ti dice necessariamente come trovarla su Internet. Di solito inizia con il prefisso urn: Ad esempio:

  • urn:isbn:0451450523 per identificare un libro dal suo numero ISBN.
  • urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66 un identificatore univoco globale
  • urn:publishing:book - Uno spazio dei nomi XML che identifica il documento come un tipo di libro.

Gli URN possono identificare idee e concetti. Non si limitano all'identificazione dei documenti. Quando un URN rappresenta un documento, può essere tradotto in un URL da un "resolver". Il documento può quindi essere scaricato dall'URL.

URC - Uniform Resource Citation

Indica i metadati relativi a un documento anziché al documento stesso. Un esempio di URC è quello che punta al codice sorgente HTML di una pagina come:view-source:http://example.com/

URI dei dati

Invece di localizzarli su Internet o denominarli, i dati possono essere inseriti direttamente in un URI. Un esempio sarebbe data:,Hello%20World.


Domande frequenti

Ho sentito che non dovrei più dire l'URL, perché?

Le specifiche W3 per HTML indicano che il hrefdi un tag anchor può contenere un URI, non solo un URL. Dovresti essere in grado di inserire un URN come <a href="urn:isbn:0451450523">. Il tuo browser avrebbe quindi risolto quell'URN in un URL e avrebbe scaricato il libro per te.

Alcuni browser sanno davvero come recuperare i documenti tramite URN?

Non che io sappia, ma il moderno browser Web implementa lo schema URI dei dati.

La differenza tra URL e URI ha a che fare con il fatto che sia relativo o assoluto?

No. Entrambi gli URL relativi e assoluti sono URL (e URI).

La differenza tra URL e URI ha qualcosa a che fare con se ha parametri di query?

No. Entrambi gli URL con e senza parametri di query sono URL (e URI).

La differenza tra URL e URI ha a che fare con se ha un identificatore di frammento?

No. Entrambi gli URL con e senza identificatori di frammenti sono URL (e URI).

La differenza tra URL e URI ha a che fare con quali caratteri sono ammessi?

No. Gli URL sono definiti come un sottoinsieme rigoroso di URI. Se un parser consente un carattere in un URL ma non in un URI, c'è un bug nel parser. Le specifiche sono molto dettagliate su quali caratteri sono ammessi in quali parti di URL e URI. Alcuni caratteri possono essere consentiti solo in alcune parti dell'URL, ma i caratteri da soli non fanno differenza tra URL e URI.

Ma il W3C non dice ora che URL e URI siano la stessa cosa?

Sì. Il W3C ha capito che c'è molta confusione in merito. Hanno pubblicato un documento di chiarimento sull'URI che afferma che ora è OK utilizzare i termini URL e URI in modo intercambiabile (per indicare URI). Non è più utile segmentare rigorosamente gli URI in diversi tipi come URL, URN e URC.

Un URI può essere sia un URL che un URN?

La definizione di URN è ora più libera di quella che ho affermato sopra. L' ultimo RFC sugli URI afferma che qualsiasi URI può ora essere un URN (indipendentemente dal fatto che inizi con urn:) purché abbia "le proprietà di un nome". Cioè: è globalmente unico e persistente anche quando la risorsa cessa di esistere o diventa non disponibile. Un esempio: gli URI utilizzati nei doctype HTML come http://www.w3.org/TR/html4/strict.dtd. Tale URI continuerebbe a nominare il doctype di transizione HTML4 anche se la pagina sul sito Web w3.org fosse eliminata.


Diagramma di Venn URI / URL


8
"C: \ myfile" è un URI, un URL o un URN? o nessuno di loro.
bvdb,

12
Un percorso di file non è un URL o URI a meno che non venga inserito il file://prefisso. Sebbene i browser generalmente gestiscano percorsi di file non formattati in URL. Mozilla pubblica i casi di test per gli URL dei file .
Stephen Ostermiller,

2
Vedere la sezione 1.1 della RFC - "L'uniformità offre numerosi vantaggi. Consente di utilizzare diversi tipi di identificatori di risorse nello stesso contesto, anche quando i meccanismi utilizzati per accedere a tali risorse possono differire. Consente un'interpretazione semantica uniforme delle convenzioni sintattiche comuni attraverso diversi tipi di identificatori di risorse ... "
Stephen Ostermiller,

Hai citato mailto:user@example.comcome URL ma un'altra risposta sotto dice che è un URN? Quale è giusto? È sia URN che URL?
user31782

5
Questa risposta è molto più facile da capire. Riesco a vedere chiaramente le immagini del vero esempio di URL e URN. E per chiunque legga di più su questo ... danielmiessler.com/study/url-uri
vee

253

In sintesi: un URI identifica, un URL identifica e individua.

Prendi in considerazione un'edizione specifica dell'opera teatrale di Shakespeare Romeo e Giulietta , di cui hai una copia digitale sulla tua rete domestica.

È possibile identificare il testo come urn:isbn:0-486-27557-4.
Sarebbe un URI, ma più specificamente un URN * perché nomina il testo .

È inoltre possibile identificare il testo come file://hostname/sharename/RomeoAndJuliet.pdf.
Sarebbe anche un URI, ma più specificamente un URL perché individua il testo .

* Nome risorsa uniforme

(Nota che il mio esempio è adattato da Wikipedia )


6
È utile notare l'URN attuale (per vedere come si confronta con un URL): urna: isbn: 0-486-27557-4
Michael Brewer-Davis

2
@Michael - È mia comprensione che ISBN 0486275574nomina anche il testo e quindi qualificabile come URN. Ho scelto un formato che credevo fosse più familiare ai lettori.
Greg,

2
Quindi avrebbe senso dire che l'hash (es. SHA1) di un file potrebbe essere un URN per quel file?
johnsimer,

@johnsimer Non la penso così, dato che potresti avere una copia di un file sullo stesso computer, il che comporterebbe lo stesso hash e quindi non è univoco.
Dennis98,

141

Queste sono alcune risposte molto ben scritte ma lunghe. Ecco la differenza per quanto riguarda CodeIgniter :

URL : http://example.com/some/page.html

URI - /some/page.html

In parole povere, l'URL è il modo completo per identificare qualsiasi risorsa ovunque e può avere protocolli diversi come FTP, HTTP, SCP, ecc.

L'URI è una risorsa sul dominio corrente, quindi ha bisogno di meno informazioni per essere trovato.

In ogni caso in cui CodeIgniter utilizza la parola URL o URI questa è la differenza di cui stanno parlando, sebbene nel grande schema del web non sia corretta al 100%.


10
Questa risposta può essere troppo semplificata ma guarda al contesto della sua domanda. Sarà più utile per lui che confondersi con gli spazi dei nomi XML!
Phil Sturgeon,

140
Questa risposta non è solo sbagliata ma attivamente fuorviante. Entrambi gli esempi sono URL. E poiché ogni URL è anche un URI, ciò significa che entrambi gli esempi sono URI. Allo scopo di dimostrare la differenza tra URI e URL, questo è totalmente inutile.
Jörg W Mittag,

12
Questa è la differenza per quanto riguarda CodeIgniter. In ogni caso usano la parola URL o URI questa è la differenza di cui stanno parlando. Pertanto, nel grande schema del web, non è corretto al 100% ma nell'ambito della domanda del PO (la differenza in CodeIgniter), questa risposta è perfettamente corretta.
Phil Sturgeon,

12
Questo è sbagliato. @ JörgWMittag è principalmente puntuale. Gli URL sono URI e sono "pienamente qualificati"; quindi l '"URL" in questa risposta è entrambi. Ma /some/page.htmlnon è un URI. È un "riferimento relativo", che è una specie di "riferimento URI". Combinato con un contesto URI di base, può essere risolto in un URI, ma non è esso stesso un URI. Vedere la sezione 4.1 della RFC 3986 . CodeIgniter sta probabilmente usando i termini errati e che dovrebbero essere richiamati; la Q (come attualmente modificata) non è inquadrata come specifica di CodeIgniter.
Andrew Janke,

37
Per le persone future che leggono questi commenti e sono confusi quanto me: questa risposta non è stata pubblicata per questa domanda. Questa domanda non ha mai avuto nulla a che fare con CodeIgniter. C'era una domanda duplicata che menzionava specificamente CodeIgniter che era chiusa e aveva tutte le sue risposte migrate su questa domanda. Questa risposta è stata una di quelle che sono state spostate dalla vecchia domanda chiusa a questa domanda protetta. Anche così, questa risposta è fuorviante. L'ho sottovalutato: altri dovrebbero fare lo stesso poiché, nella sua nuova casa, è sbagliato. L'autore dovrebbe eliminarlo o l'unione dovrebbe essere annullata.
ArtOfWarfare il

92

Prima di tutto toglie la mente dalla confusione e prendila semplice e capirai.

URI => Identificatore di risorsa uniforme Identifica un indirizzo completo della risorsa, ovvero posizione, nome o entrambi.

URL => Uniform Resource Locator Identifica la posizione della risorsa.

URN => Nome risorsa uniforme Identifica il nome della risorsa

Esempio

Abbiamo l'indirizzo https://www.google.com/folder/page.html dove,

URI (Uniform Resource Identifier) ​​=> https://www.google.com/folder/page.html

URL (Uniform Resource Locator) => https://www.google.com/

URN (Uniform Resource Name) => /folder/page.html

URI => (URL + URN) o solo URL o solo URN


66

Una piccola aggiunta alle risposte già pubblicate, ecco un diagramma di Venn per riassumere la teoria (dalla bella spiegazione di Prateek Joshi ):

inserisci qui la descrizione dell'immagine

E un esempio (anche dal sito Web di Prateek):

inserisci qui la descrizione dell'immagine


20
Credo che la seconda illustrazione sia errata. Secondo la specifica url.spec.whatwg.org/#url-writing Un URL deve essere scritto come un URL relativo o un URL assoluto, facoltativamente seguito da "#" e da un frammento. Quindi, l' #postsidentificatore di frammento potrebbe essere parte dell'URL
ruvim

7
Le due illustrazioni si contraddicono a vicenda.
patapouf_ai,

53

Questo è uno degli argomenti più confusi e forse irrilevanti che ho incontrato come professionista del web.

A quanto ho capito, un URI è una descrizione di qualcosa, che segue un formato accettato, che può definire entrambi o il nome univoco (identificazione) di qualcosa e la sua posizione.

Esistono due sottoinsiemi di base: URL, che definiscono la posizione (in particolare a un browser che cerca di cercare una pagina Web) e URN, che definiscono il nome univoco di qualcosa.

Tendo a pensare agli URN come simili ai GUID. Sono semplicemente una metodologia standardizzata per fornire nomi univoci per le cose. Come nel dichiarativo dello spazio dei nomi che utilizza il nome di un'azienda - non è che ci sia una risorsa seduta su un server da qualche parte per corrispondere a quella riga di testo - identifica semplicemente qualcosa in modo univoco.

Tendo anche a evitare completamente il termine URI e discutere le cose solo in termini di URL o URN, a seconda dei casi, perché causa molta confusione. La domanda a cui dovremmo davvero provare a rispondere per le persone non è tanto la semantica, ma come identificare quando si incontrano i termini se ci sono o meno differenze pratiche che cambieranno l'approccio a una situazione di programmazione. Ad esempio, se qualcuno mi corregge nella conversazione e dice "oh, non è un URL è un URI" So che ne sono pieni. Se qualcuno dice "stiamo usando un URN per definire la risorsa", ho maggiori probabilità di capire che lo stiamo solo nominando in modo univoco, non localizzandolo su un server.

Se sono lontano dalla base, per favore fatemi sapere!


4
No, penso che tu abbia ragione. La semantica di URI vs URL vs URL vs URI-ref ecc. È inutile per la maggior parte degli sviluppatori, solo perché stimola un dibattito inutile (non produttivo, insignificante nel processo decisionale). Se l'API di Google fosse utilizzata redirect_urlinvece di redirect_uri, a qualcuno interesserebbe davvero?

53

Identità = nome con posizione

Ogni URL ( U niform R esource L ocator) è un URI ( U niform R esource I dentifier ), in termini astratti, ma ogni URI non è un URL. Esiste un'altra sottocategoria di URI: URN ( U niform R esource N ame), che è una risorsa denominata ma non specifica come individuarle, come mailto, news, ISBN è URI. fonte

inserisci qui la descrizione dell'immagine

URNA:

  • Formato URN: urn:[namespace identifier]:[namespace specific string]
  • urna: e: stare in piedi da soli.
  • Esempi :
    • urn: uuid: 6e8bc430-9c3a-11d9-9669-0800200c9a66
    • urn: ISSN: 0167-6423
    • urn: ISBN: 096139210x
    • Amazon Resource Names (ARNs) è una risorsa AWS identificata in modo univoco.
      • Formato ARN: arn:partition:service:region:account-id:resource

URL:

  • Formato URL: [scheme]://[Domain][Port]/[path]?[queryString]#[fragmentId]
  • : // ,? e # rappresentano se stessi.
  • gli schemi sono https, ftp, gopher, mailto, news, telnet, file, man, info, whatis, ldap ...
  • Esempi:

Analogia:
raggiungere una persona: guida (protocollo altri SMS, email, telefono), indirizzo (nome host altro numero di telefono, emailid) e nome della persona (nome oggetto con un percorso relativo).


Minimo cavillo: dovrebbero esserci due punti tra [dominio] e [porta]. IE: esempio.com:1234
Rex Schrader

42

URI => http://en.wikipedia.org/wiki/Uniform_Resource_Identifier

Gli URL sono un sottoinsieme di URI (che contengono anche URN).

Fondamentalmente, un URI è un identificatore generale, in cui un URL specifica una posizione e un URN specifica un nome.


1
Gli URL non sono un sottoinsieme vero di URI. Puoi creare vari URL con caratteri [e ]non un URI.
Adam Gent,

4
Le parentesi quadre non sono valide in URI o URL. Vedi questa domanda che ha molti riferimenti alle specifiche: Le parentesi quadre sono consentite negli URL? . Quando compaiono tra parentesi quadre, devono essere codificate.
Stephen Ostermiller,

35

Un altro esempio che mi piace usare quando penso agli URI è l'attributo xmlns di un documento XML:

<rootElement xmlns:myPrefix="com.mycompany.mynode">
    <myPrefix:aNode>some text</myPrefix:aNode>
</rootElement>

In questo caso com.mycompany.mynode sarebbe un URI che identifica in modo univoco lo spazio dei nomi "myPrefix" per tutti gli elementi che lo utilizzano nel mio documento XML. Questo NON è un URL perché viene utilizzato solo per identificare, non per individuare qualcosa di per sé.


28

A causa delle difficoltà nel distinguere chiaramente tra URI e URL, per quanto ricordo W3C non fa più la differenza tra URI e URL ( http://www.w3.org/Addressing/ ).


Forse ho perso quella parte, ma non vedo alcun riferimento nel link fornito che rimuove la distinzione tra URL e URI, riconoscendo solo la confusione e volendo che le specifiche che fanno erroneamente riferimento all'URL vengano aggiornate in riferimento all'URI.
Tim Gautier,

27

Sono la stessa cosa . Un URI è una generalizzazione di un URL. Inizialmente, gli URI erano pianificati per essere divisi in URL (indirizzi) e URN (nomi) ma poi c'era poca differenza tra un URL e un URI e gli URI http venivano usati come spazi dei nomi anche se in realtà non individuavano alcuna risorsa.


Ho pensato che fosse il contrario. Un URL si riferisce a un oggetto concreto e un URI può fare riferimento a quello o un concetto o qualsiasi altra cosa.
Chris Charabaruk,

4
Un URL individua una risorsa ed è una specie di URI, che identifica una risorsa.
Mark Cidade,

È vero solo che sono la stessa cosa perché la definizione di URL è cambiata nel tempo. Gli URL erano un tipo specifico di URI, ma a causa della confusione che ha causato, il W3C ha ridefinito l'URL con il significato di URI.
Stephen Ostermiller,

25

URI e URL

URI, URL, URN

Come indica l'immagine qui sopra, ci sono tre componenti distinti in gioco qui. Di solito è meglio andare alla fonte quando si discute di argomenti come questi, quindi ecco un estratto di Tim Berners-Lee, et. al. in RFC 3986: Uniform Resource Identifier (URI): Sintassi generica:

Un Uniform Resource Identifier (URI) è una sequenza compatta di caratteri che identifica una risorsa astratta o fisica.

Un URI può essere ulteriormente classificato come localizzatore, nome o entrambi. Il termine "Uniform Resource Locator" (URL) si riferisce al sottoinsieme di URI che, oltre a identificare una risorsa, forniscono un mezzo per localizzare la risorsa descrivendone il meccanismo di accesso primario (ad esempio, la "posizione" della sua rete).


21

L'URI è una specie della super classe di URL e URN. Wikipedia ha un bell'articolo su di loro con collegamenti al giusto set di RFC.


17

Wikipedia fornirà tutte le informazioni di cui hai bisogno qui. Citando da http://en.wikipedia.org/wiki/URI :

Un URL è un URI che, oltre a identificare una risorsa, fornisce i mezzi per agire o ottenere una rappresentazione della risorsa descrivendone il meccanismo di accesso primario o la "posizione" della rete.


16

URL

Un URL è una specializzazione di URI che definisce il percorso di rete di una risorsa specifica. A differenza di un URN, l'URL definisce come ottenere la risorsa. Usiamo gli URL ogni giorno sotto forma di http://example.comecc. Ma un URL non deve essere un URL HTTP, può anche essere ftp://example.comecc.

URI

Un URI identifica una risorsa per posizione, un nome o entrambi. Il più delle volte, la maggior parte di noi utilizza URI che definiscono una posizione per una risorsa. Il fatto che un URI sia in grado di identificare una risorsa sia per nome che per località ha portato molta confusione secondo me. Un URI ha due specializzazioni conosciute come URL e URN.

Differenza tra URL e URI

Un URI è un identificatore per alcune risorse, ma un URL fornisce informazioni specifiche su come ottenere quella risorsa. Un URI è un URL e, come ha sottolineato un commentatore, ora è considerato errato utilizzare l'URL durante la descrizione delle applicazioni. In genere, se l'URL descrive sia la posizione che il nome di una risorsa, il termine da utilizzare è URI. Dal momento che questo è generalmente il caso che la maggior parte di noi incontra ogni giorno, URI è il termine corretto.


15

Secondo RFC 3986 , gli URI sono composti dai seguenti pezzi:

scheme://authority/path?query

L'URI descrive il protocollo per l'accesso a una risorsa ( percorso ) o ad un'applicazione ( query ) su un server ( autorità ).

Inserisci qui la descrizione dell'immagine

Tutti gli URL sono URI e tutti gli URN sono URI, ma tutti gli URI non sono URL.

Si prega di fare riferimento per maggiori dettagli:

Wikipedia


3
Questo non mi insegna nulla che non sia coperto dalle altre risposte che hanno almeno 6 anni e che sono molto più complete e in realtà cercano di spiegare come distinguere gli URI dagli URL.
ccjmne,

2
È importante notare che l'immagine è un diagramma di Venn anche se non sembra tipico. Ho visto persone provare a interpretarlo come "parti dell'URL". Questo diagramma non dice che gli URI iniziano con un URL e terminano con un URN.
Stephen Ostermiller,

14

Un URI identifica una risorsa per posizione, un nome o entrambi. Il più delle volte, la maggior parte di noi utilizza URI che definiscono una posizione per una risorsa. Il fatto che un URI sia in grado di identificare una risorsa sia per nome che per località ha portato molta confusione secondo me. Un URI ha due specializzazioni conosciute come URL e URN.

Un URL è una specializzazione di URI che definisce il percorso di rete di una risorsa specifica. A differenza di un URN, l'URL definisce come ottenere la risorsa. Usiamo gli URL ogni giorno sotto forma di http://stackoverflow.com , ecc. Ma un URL non deve essere un URL HTTP, può essere ftp://example.com, ecc.


11

Sebbene i termini URI e URL siano definiti in modo rigoroso, molti usano i termini per scopi diversi da quelli per cui sono definiti.

Prendiamo Apache per esempio. Se http://example.com/foo è richiesto da un server Apache, avrai le seguenti variabili d'ambiente impostate:

  • REDIRECT_URL: /foo
  • REQUEST_URI: /foo

Con mod_rewrite abilitato, avrai anche queste variabili:

  • REDIRECT_SCRIPT_URL: /foo
  • REDIRECT_SCRIPT_URI: http://example.com/foo
  • SCRIPT_URL: /foo
  • SCRIPT_URI: http://example.com/foo

Questo potrebbe essere il motivo di un po 'di confusione.


10

Vedere questo documento . In particolare,

un URL è un tipo di URI che identifica una risorsa tramite una rappresentazione del suo meccanismo di accesso primario (ad esempio, la "posizione" della sua rete), piuttosto che mediante alcuni altri attributi che potrebbe avere.

Non è un termine estremamente chiaro, davvero.


10

Dopo aver letto i post, trovo alcuni commenti molto pertinenti. In breve, la confusione tra le definizioni URL e URI si basa in parte su quale definizione dipende da quale e anche l'uso informale della parola URI nello sviluppo del software.

Per definizione, l'URL è un sottoinsieme di URI [RFC2396]. L'URI contiene URN e URL. Sia l'URI che l'URL hanno ciascuno una propria sintassi specifica che conferisce loro lo stato di URI o URL. L'URN serve per identificare in modo univoco una risorsa mentre l'URL serve per individuare una risorsa. Si noti che una risorsa può avere più di un URL ma solo un singolo URN. [RFC2611]

Come sviluppatori web e programmatori ci occuperemo quasi sempre di URL e quindi URI. Ora un URL è definito in modo specifico per avere tutto lo schema delle parti: parte specifica dello schema, come ad esempio https://stackoverflow.com/questions . Questo è un URL ed è anche un URI. Ora considera un link relativo incorporato nella pagina come ../index.html. Questo non è più un URL per definizione. È ancora ciò che viene definito "riferimento URI" [RFC2396].

Credo che quando la parola URI è usata per riferirsi a percorsi relativi, "riferimento URI" è in realtà ciò a cui si sta pensando. Pertanto, in modo informale, i sistemi software utilizzano l'URI per fare riferimento al relativo percorso e URL per l'indirizzo assoluto. Quindi, in questo senso, un percorso relativo non è più un URL ma comunque URI.


10

Ecco la mia semplificazione:

URN: nome di risorsa univoco, ovvero "cosa" (ad esempio urna: issn: 1234-5678). Questo è pensato per essere unico ... come in nessun altro documento può avere la stessa urna. Un po 'come "uuido"

URL: "dove" trovarlo (ad es . Https://google.com/pub?issnid=1234-5678 .. o ftp://somesite.com/doc8.pdf )

URI: può essere un URN o un URL. Questa definizione fuzzy è grazie alla RFC 3986 prodotta da W3C e IETF.

La definizione di URI è cambiata nel corso degli anni, quindi ha senso confondere la maggior parte delle persone. Tuttavia, ora puoi trovare conforto nel fatto che puoi riferirti a http://somesite.com/something come un URL o URI ... e avrai ragione in entrambi i casi (almeno per il momento comunque .. .)


9

Mi chiedevo la stessa cosa e ho trovato questo: http://docs.kohanaphp.com/helpers/url .

Puoi vedere un chiaro esempio usando il url::current()metodo Se si dispone di questo URL : http://example.com/kohana/index.php/welcome/home.html?query=stringquindi l'utilizzo url:current()fornisce l' URI che, secondo la documentazione, è: welcome / home


1
Questa risposta è sbagliata Un URI non è una parte dell'URL. Piuttosto gli URL sono un tipo di URI. Inoltre, il link in questa risposta è interrotto (e non riesco a trovare un sostituto adatto.)
Stephen Ostermiller,

8

Gli URI sono nati dalla necessità di identificare le risorse sul Web e altre risorse Internet come le caselle di posta elettronica in modo uniforme e coerente. Pertanto, è possibile introdurre un nuovo tipo di widget: URI per identificare le risorse del widget o utilizzare tel: URI per avere collegamenti Web che causano chiamate telefoniche quando vengono invocate.

Alcuni URI forniscono informazioni per individuare una risorsa (come un nome host DNS e un percorso su quella macchina), mentre altri vengono utilizzati come nomi di risorse pure. L' URL è riservato agli identificatori che sono localizzatori di risorse , inclusi gli URL "http" come http://stackoverflow.com , che identifica la pagina Web nel percorso specificato sull'host. Un altro esempio sono gli URL "mailto", come mailto: fred@mail.org , che identifica la cassetta postale all'indirizzo indicato.

Gli URN sono URI che vengono utilizzati come nomi di risorse pure anziché come localizzatori. Ad esempio, l'URI: mid: 0E4FC272-5C02-11D9-B115-000A95B55BC8@stackoverflow.com è un URN che identifica il messaggio e-mail che lo contiene nel suo campo "ID messaggio". L'URI serve a distinguere quel messaggio da qualsiasi altro messaggio di posta elettronica. Ma non fornisce di per sé l'indirizzo del messaggio in nessun negozio.


7

Per rispondere a questo mi affido a una risposta che ho modificato in un'altra domanda . Un buon esempio di URI è il modo in cui identifichi una risorsa Amazon S3. Prendiamo:

s3://www-example-com/index.html [Figura. 1]

che ho creato come copia cache di

http://www.example.com/index.html [Figura. 2]

nel data center Amazon S3-US-West-2 .

Anche se StackOverflow mi permettesse di collegarmi all'hyperlink allo schema del s3:// protocollo , non ti farebbe bene a localizzare la risorsa. Perché identifica una risorsa , fig. 1 è un URI valido. È anche un URN valido, perché Amazon richiede che il bucket (il loro termine per la authorityparte dell'URI) sia univoco tra i datacenter. È utile per individuarlo, ma non indica il datacenter. Pertanto non funziona come un URL.

Quindi, in che modo URI, URL e URN differiscono in questo caso?

NOTA: RFC 3986 definisce gli URI comescheme://authority/path?query#fragment


6

Facile da spiegare:

Supponiamo che:

URI è il tuo nome

L'URL è il tuo indirizzo con il tuo nome per comunicare con te.

  • mi chiamo Loyola

    Loyola è URI

  • il mio indirizzo è TN, Chennai 600001.

TN, Chennai 600 001, Loyola è URL

Spero tu capisca,

Ora vediamo un esempio preciso

http://www.google.com/fistpage.html

in quanto sopra puoi comunicare con una pagina chiamata firstpage.html ( URI ) utilizzando il seguente http://www.google.com/fistpage.html ( URL ).

Quindi l'URI è un sottoinsieme di URL ma non viceversa.


4
Questa risposta è fuorviante. Citazione da Wikipedia "Un nome di risorsa uniforme (URN) funziona come il nome di una persona, mentre un URL (Uniform Resource Locator) ricorda l'indirizzo di quella persona. In altre parole: l'URN definisce l'identità di un elemento, mentre l'URL fornisce un metodo per trovare esso ". Anche gli URN e gli URL sono URI.
Vegan Sv,

4

Un URI (Uniform Resource Identifier) ​​è una stringa di caratteri che identifica una risorsa Internet.

L'URI più comune è l'Uniform Resource Locator (URL) che identifica un indirizzo di dominio Internet. Un altro tipo di URI non così comune è l'URN (Universal Resource Name).


4

Ho trovato:


Un identificatore di risorsa uniforme (URI) rappresenta una sorta di quadro generale. È possibile dividere URI / URI che possono essere classificati come localizzatori (localizzatori di risorse uniformi - URL) o come nomi (nome di risorsa uniforme - URN) o entrambi. Quindi, fondamentalmente, un URN funziona come il nome di una persona e l'URL mostra l'indirizzo di quella persona. Per farla breve, un URN definisce l'identità di un elemento, mentre l'URL fornisce definisce il metodo per trovarlo, infine incapsulare questi due concetti è l'URI


2

Il migliore imo (tecnico) di riepilogo è questo

IRI, URI, URL, URN e le loro differenze rispetto a Jan Martin Keil:

IRI, URI, URL, URN e loro differenze

Chiunque abbia a che fare con il Web semantico si imbatte ripetutamente nei termini IRI , URI , URL e URN . Tuttavia, osservo spesso che c'è un po 'di confusione sul loro significato esatto. E, naturalmente, anche altri lo hanno notato (vedi ad es. RFC3305 o cerca su Google). Ad essere sincero, all'inizio ero persino confuso. Ma in realtà il problema non è così complesso. Diamo un'occhiata alle definizioni dei termini citati per vedere quali sono le differenze:

URI

Un identificatore di risorsa uniforme è una sequenza compatta di caratteri che identifica una risorsa astratta o fisica. Il set di caratteri è limitato a US-ASCII esclusi alcuni caratteri riservati. I caratteri al di fuori del set di caratteri consentiti possono essere rappresentati utilizzando la codifica percentuale. Un URI può essere utilizzato come localizzatore, nome o entrambi. Se un URI è un localizzatore, descrive il meccanismo di accesso principale di una risorsa. Se un URI è un nome, identifica una risorsa assegnandole un nome univoco. Le specifiche esatte di sintassi e semantica di un URI dipendono dallo schema utilizzato definito dai caratteri prima dei primi due punti. [RFC3986]

URNA

Un nome di risorsa uniforme è un URI nell'urna dello schema destinato a fungere da identificatore di risorsa persistente, indipendente dalla posizione. Storicamente, il termine si riferiva anche a qualsiasi URI. [RFC3986] Un URN è costituito da un identificatore dello spazio dei nomi (NID) e una stringa specifica dello spazio dei nomi (NSS): urna :: La sintassi e la semantica dell'NSS è specifica specifica per ciascun NID. Oltre ai NID registrati, esistono molti altri NID che non sono stati sottoposti al processo di registrazione ufficiale. [RFC2141]

URL

Un Uniform Resource Locator è un URI che, oltre a identificare una risorsa, fornisce un mezzo per localizzare la risorsa descrivendone il meccanismo di accesso primario [RFC3986]. Poiché non esiste una definizione esatta di URL mediante una serie di schemi, "URL è un concetto utile ma informale", in genere riferito a un sottoinsieme di URI che non contengono URN [RFC3305].

IRI

Un identificatore di risorse internazionalizzato è definito in modo simile a un URI, ma il set di caratteri è esteso al set di caratteri con codice universale. Pertanto, può contenere qualsiasi carattere latino e non latino tranne i caratteri riservati. Invece di estendere la definizione di URI, il termine IRI è stato introdotto per consentire una chiara distinzione ed evitare incompatibilità. Gli IRI hanno lo scopo di sostituire gli URI nell'identificazione delle risorse in situazioni in cui è supportato il set di caratteri codificati universali. Per definizione, ogni URI è un IRI. Inoltre, esiste una mappatura suriettiva definita di IRI su URI: ogni IRI può essere mappato esattamente su un URI, ma diversi IRI potrebbero essere mappati sullo stesso URI. Pertanto, la conversione da un URI a un IRI potrebbe non produrre l'IRI originale. [RFC3987]

Riassumendo possiamo dire:

IRI is a superset of URI (IRI ⊃ URI)
URI is a superset of URL (URI ⊃ URL)
URI is a superset of URN (URI ⊃ URN)
URL and URN are disjoint (URL ∩ URN = ∅)

Conclusioni per problemi Web semantici

RDF consente esplicitamente di utilizzare gli IRI per denominare le entità [RFC3987]. Ciò significa che possiamo usare quasi tutti i caratteri nei nomi delle entità. D'altra parte, spesso abbiamo a che fare con software di stato iniziale. Pertanto, è improbabile che si verifichino problemi utilizzando caratteri non ASCII. Pertanto, suggerisco di evitare nomi non URI per entità e consiglio di utilizzare URI http [LINKED-DATA]. Per dirla brevemente: usa solo gli URL per nominare le tue entità. Naturalmente, possiamo fare riferimento a entità esistenti denominate da un URN. Tuttavia, dovremmo evitare di creare di nuovo questo tipo di identificatori.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.