Vraag Wat is het verschil tussen een URI, een URL en een URN?


Mensen praten over URLs, URIs en URNs alsof het andere dingen zijn, maar ze zien er hetzelfde uit voor het blote oog.

Wat zijn de te onderscheiden verschillen tussen hen?


3704
2017-10-06 21:26


oorsprong


antwoorden:


Van RFC 3986:

Een URI kan verder worden geclassificeerd als een locator, een naam of beide. De      term "Uniform Resource Locator" (URL) verwijst naar de subset van URI's      die, naast het identificeren van een hulpbron, een middel bieden om      lokaliseren van de resource door het primaire toegangsmechanisme te beschrijven      (bijvoorbeeld de "locatie" van het netwerk). De term "Uniforme resourcenaam"      (URN) is in het verleden gebruikt om te verwijzen naar beide URI's onder de      "urn" -schema [RFC2141], die vereist zijn om wereldwijd uniek te blijven      en persistent, zelfs wanneer de bron ophoudt te bestaan ​​of wordt      niet beschikbaar, en voor elke andere URI met de eigenschappen van een naam.

Alle URL's zijn dus URI's (eigenlijk niet helemaal - zie hieronder) en alle URN's zijn URI's - maar URN's en URL's zijn anders, dus u kunt niet zeggen dat alle URI's URL's zijn.

EDIT: ik had eerder gedacht dat alle URL's geldige URI's zijn, maar volgens opmerkingen:

Niet "alle URL's zijn URI's". Het hangt af van de interpretatie van de RFC. Bijvoorbeeld in Java houdt de URI-parser niet van [ of ] en dat komt omdat de specificatie zegt "niet mag" en niet "zal niet".

Dus dat troost de wateren verder, helaas.

Als u nog niet hebt gelezen Roger Pate's antwoord, Zou ik adviseren om dit ook te doen.


1515
2017-10-06 21:29



URIs identificeren en URLs lokaliseren; echter, locators zijn ook ID's, dus elke URL is ook een URI, maar er zijn URI's die geen URL's zijn.

Voorbeelden

  • Roger Pate

Dit is mijn naam, die een ID is. Het is als een URI, maar het kan geen URL zijn, omdat het u niets over mijn locatie vertelt of hoe u contact met mij kunt opnemen. In dit geval identificeert het toevallig ook minstens 5 andere mensen in de VS.

  • 4914 West Bay Street, Nassau, Bahama's

Dit is een locator, die een identifier voor die fysieke locatie is. Het is net als zowel een URL als een URI (omdat alle URL's URI's zijn) en identificeert mij ook indirect als "bewoner van ..". In dit geval identificeert het mij op unieke wijze, maar dat zou veranderen als ik een kamergenoot zou krijgen.

Ik zeg 'like' omdat deze voorbeelden niet voldoen aan de vereiste syntaxis.

Populaire verwarring

Van Wikipedia:

Bij computing is een Uniform Resource Locator (URL) een subset van de Uniform Resource Identifier (URI) die aangeeft waar een geïdentificeerde resource beschikbaar is en het mechanisme voor het ophalen ervan. In populair gebruik en in veel technische documenten en verbale discussies wordt het vaak verkeerd gebruikt als een synoniem voor URI, ... [nadruk van mij]

Vanwege deze veel voorkomende verwarring, gebruiken veel producten en documentatie ten onrechte de ene term in plaats van de andere, kennen ze hun eigen onderscheid toe of gebruiken ze deze synoniemen.

URNs

Mijn naam, Roger Pate, zou kunnen zijn als een URN (Uniforme resource naam), behalve die zijn veel meer gereguleerd en bedoeld om uniek over te zijn beide ruimte en tijd.

Omdat ik deze naam momenteel deel met andere mensen, is het niet wereldwijd uniek en zou het niet geschikt zijn als URN. Maar zelfs als geen ander gezin deze naam gebruikte, ben ik vernoemd naar mijn grootvader van mijn vader, dus het zou nog steeds niet uniek zijn in de tijd. En zelfs als dat was niet het geval, de mogelijkheid om mijn nazaten naar mij te noemen, maakt dit ongeschikt als een URN.

URN's verschillen van URL's in deze rigide uniciteitsbeperking, hoewel ze beide de syntaxis van URI's delen.


3524
2017-12-31 06:32



URI - Uniform Resource Identifier

URI's zijn een standaard voor het identificeren van documenten met een korte reeks cijfers, letters en symbolen. Ze worden gedefinieerd door RFC 3986 - Uniform Resource Identifier (URI): Generieke syntaxis. URL's, URN's en URC's zijn alles soorten van URI.

URL - Uniform Resource Locator

Bevat informatie over hoe een resource van de locatie opgehaald kan worden. Bijvoorbeeld:

  • 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 (Een relatieve URL, alleen nuttig in de context van een andere URL)

URL's beginnen altijd met een protocol (http) en bevatten meestal informatie zoals de netwerkhostnaam (example.com) en vaak een documentpad (/foo/mypage.html). URL's kunnen queryparameters en fragment-ID's hebben.

URN - Uniforme resourcenaam

Identificeert een resource met een unieke en persistente naam, maar vertelt u niet noodzakelijk hoe u deze op internet kunt vinden. Het begint meestal met het voorvoegsel urn:  Bijvoorbeeld:

  • urn:isbn:0451450523 om een ​​boek te identificeren aan de hand van het ISBN-nummer.
  • urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66 een globaal unieke identificatiecode
  • urn:publishing:book - Een XML-naamruimte die het document als een type boek identificeert.

URN's kunnen ideeën en concepten identificeren. Ze zijn niet beperkt tot het identificeren van documenten. Wanneer een URN een document vertegenwoordigt, kan het worden vertaald in een URL door een "resolver". Het document kan vervolgens worden gedownload van de URL.

URC - Uniform Resource Citation

Wijst op metagegevens over een document in plaats van op het document zelf. Een voorbeeld van een URC is een verwijzing naar de HTML-broncode van een pagina zoals: view-source:http://example.com/

Gegevens-URI

In plaats van deze op het internet te lokaliseren of te benoemen, kunnen gegevens rechtstreeks in een URI worden geplaatst. Een voorbeeld zou zijn data:,Hello%20World.


Veel Gestelde Vragen

Ik heb gehoord dat ik geen URL meer moet zeggen, waarom?

De W3-specificatie voor HTML zegt dat het href van een ankertag kan een URI bevatten, niet alleen een URL. Je zou een URN zoals. Moeten kunnen plaatsen <a href="urn:isbn:0451450523">. Uw browser zou dan die URN naar een URL oplossen en het boek voor u downloaden.

Weten browsers daadwerkelijk hoe ze documenten moeten ophalen door URN?

Niet dat ik weet, maar de moderne webbrowser implementeert het data-URI-schema.

Heeft het verschil tussen URL en URI te maken met of het relatief of absoluut is?

Nee. Zowel relatieve als absolute URL's zijn URL's (en URI's).

Heeft het verschil tussen URL en URI te maken met queryparameters?

Nee. Beide URL's met en zonder queryparameters zijn URL's (en URI's).

Heeft het verschil tussen URL en URI te maken met het feit of het een fragment-ID heeft?

Nee. Beide URL's met en zonder fragment-ID's zijn URL's (en URI's).

Heeft het verschil tussen URL en URI te maken met welke tekens zijn toegestaan?

Nee. URL's worden gedefinieerd als een strikte subset van URI's. Als een parser een teken in een URL toestaat maar niet in een URI, is er een fout in de parser. De specificaties gaan gedetailleerd in op welke tekens zijn toegestaan ​​in welke delen van URL's en URI's. Sommige tekens zijn mogelijk alleen toegestaan ​​in sommige delen van de URL, maar alleen tekens vormen geen verschil tussen URL's en URI's.

Maar zegt het W3C nu niet dat URL's en URI's hetzelfde zijn?

Ja. Het W3C realiseerde zich dat er een hoop verwarring over is. Ze gaven een URI verduidelijkingsdocument dat zegt dat het nu OK is om de termen URL en URI onderling uitwisselbaar te gebruiken (om URI te betekenen). Het is niet langer nuttig om URI's strikt te segmenteren in verschillende typen, zoals URL, URN en URC.

Kan een URI zowel een URL als een URN zijn?

De definitie van URN is nu losser dan wat ik hierboven heb aangegeven. De nieuwste RFC op URI's zegt dat elke URI nu een URN kan zijn (ongeacht of het begint met urn:) zolang het "de eigenschappen van een naam" heeft. Dat wil zeggen: het is globaal uniek en persistent, zelfs wanneer de bron ophoudt te bestaan ​​of niet meer beschikbaar is. Een voorbeeld: de URI's die worden gebruikt in HTML-doctypes zoals http://www.w3.org/TR/html4/strict.dtd. Die URI zou het HTML4-overgangstype blijven noemen, zelfs als de pagina op de w3.org-website werd verwijderd.


URI/URL Venn Diagram


474
2018-03-04 21:51



Samengevat: een URI identificeert, een URL identificeert en lokaliseert.

Overweeg een specifieke editie van het toneelstuk van Shakespeare Romeo en Julia, waarvan u een digitale kopie op uw thuisnetwerk hebt.

Je zou de tekst kunnen identificeren als urn:isbn:0-486-27557-4.
Dat zou een URI zijn, maar meer specifiek een URN* omdat het geeft de tekst een naam.

Je zou ook de tekst kunnen identificeren als file://hostname/sharename/RomeoAndJuliet.pdf.
Dat zou ook een URI zijn, maar meer specifiek een URL omdat het lokaliseert de tekst.

* Uniforme resourcenaam

(Merk op dat mijn voorbeeld is aangepast van Wikipedia)


233
2017-12-31 06:51



Dit zijn enkele zeer goed geschreven maar langdradige antwoorden. Hier is het verschil wat betreft CodeIgniter:

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

URI - /some/page.html

Simpel gezegd, URL is de volledige manier om bronnen overal te identificeren en kan verschillende protocollen hebben zoals FTP, HTTP, SCP, etc.

URI is een resource op het huidige domein, dus er is minder informatie voor nodig.

In elk geval dat CodeIgniter het woord URL of URI gebruikt, is dit het verschil waar ze het over hebben, hoewel het in het grote schema van het web niet 100% correct is.


124
2017-12-31 08:58



Een kleine toevoeging aan de reeds geposte antwoorden, hier is een diagram van Venn om de theorie samen te vatten (van het mooie Prateek Joshi uitleg):

enter image description here

En een voorbeeld (ook van de website van Prateek):

enter image description here


64
2017-10-16 17:46



Dit is een van de meest verwarrende en mogelijk irrelevante onderwerpen die ik als webprofessional ben tegengekomen.

Zoals ik het begrijp, is een URI een beschrijving van iets, volgens een geaccepteerd formaat, dat zowel de unieke naam (identificatie) van iets als de locatie kan definiëren.

Er zijn twee basissubsets: URL's, die de locatie bepalen (vooral voor een browser die een webpagina probeert op te zoeken) en URN's, die de unieke naam van iets definiëren.

Ik heb de neiging om te denken dat URN's vergelijkbaar zijn met GUID's. Ze zijn gewoon een gestandaardiseerde methodologie voor het leveren van unieke namen voor dingen. Net als in de namespace declarative die de naam van een bedrijf gebruikt - het is niet zo dat er ergens op een server een resource zit die overeenkomt met die regel tekst - het identificeert eenvoudigweg iets uniek.

Ik heb ook de neiging om de term URI volledig te vermijden en alleen in termen van URL of URN te bespreken, omdat dit zoveel verwarring veroorzaakt. De vraag die we echt moeten proberen te beantwoorden voor mensen is niet zozeer de semantiek, maar hoe te identificeren wanneer we tegen de voorwaarden aanlopen, of er al dan niet een praktisch verschil is dat de benadering van een programmeringssituatie zal veranderen. Bijvoorbeeld, als iemand me corrigeert in een gesprek en zegt: "oh, dat is geen URL, het is een URI" Ik weet dat ze er vol mee zijn. Als iemand zegt: "we gebruiken een URN om de resource te definiëren", begrijp ik meer dat we dit alleen op een unieke manier benoemen en niet op een server lokaliseren.

Als ik ver van de basis ben - laat het me weten!


52
2017-12-01 13:07



Allereerst, haal je geest uit de verwarring en neem het simpel en je zult het begrijpen.

URI => Uniform Resource Identifier Identificeert een compleet adres van resource i-e locatie, naam of beide.

URL => Uniform Resource Locator Identificeert de locatie van de bron.

URN => Uniforme resourcenaam Identificeert de naam van de bron

Voorbeeld

We hebben adres https://www.google.com/folder/page.html waar,

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) of alleen URL of alleen URN


44
2017-07-21 17:50



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

URL's zijn een subset van URI's (die ook URN's bevatten).

Kort gezegd is een URI een algemene ID, waarbij een URL een locatie opgeeft en een URN een naam opgeeft.


42
2017-10-06 21:30