Was ist der Unterschied zwischen einer URI und einer URL?

44

Ich habe diese Seiten gelesen:

Ich kenne mich mit URL, URN und URI aus. aber wenig über ihre Unterschiede . Das, was ich nicht verstehen kann, ist auf einer Seite wie: http://www.bernzilla.com/item.php?id=100Welcher Teil ist URL, URN und URI!
URI ist ganzer Teil, aber URL und URN?

Bild aus Wikipedia

Edit:
von w3c.org:

Eine URL ist ein URI-Typ, der eine Ressource anhand einer Darstellung ihres primären Zugriffsmechanismus (z. B. ihres Netzwerk- "Standorts") und nicht anhand anderer Attribute identifiziert.

von www.damnhandy.com :

Es wird nun als falsch angesehen, URL zur Beschreibung von Anwendungen zu verwenden.

Jetzt ist idein Attribut? Was ist mit Bewerbungsteil? Ist PHP eine Anwendung?

rückgängig gemacht
quelle
3
Diese Frage wurde bei Stack Overflow einige Male gestellt und erhielt viel Aufmerksamkeit und gute Antworten: Was ist der Unterschied zwischen einem URI und einer URL?
Hippietrail

Antworten:

42

URI / URL-Venn-Diagramm

URL - Uniform Resource Locator

Enthält Informationen zum Abrufen einer Ressource von ihrem Speicherort. Zum Beispiel:

  • http://example.com/mypage.html
  • ftp://example.com/download.zip
  • mailto:[email protected]
  • file:///home/user/file.txt
  • tel:1-888-555-5555
  • http://example.com/resource?foo=bar#fragment
  • /other/link.html (Eine relative URL, die nur im Kontext einer anderen URL nützlich ist.)

URLs beginnen immer mit einem Protokoll ( http) und enthalten normalerweise Informationen wie den Netzwerkhostnamen ( example.com) und häufig einen Dokumentpfad ( /foo/mypage.html). URLs können Abfrageparameter und Fragmentbezeichner enthalten.

URN - Uniform Resource Name

Identifiziert eine Ressource anhand eines eindeutigen und dauerhaften Namens. Es beginnt normalerweise mit dem Präfix. urn: Zum Beispiel:

  • urn:isbn:0451450523 um ein Buch anhand seiner ISBN-Nummer zu identifizieren.
  • urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66 ein global eindeutiger Bezeichner
  • urn:publishing:book - Ein XML-Namespace, der das Dokument als eine Art Buch identifiziert.

URNs können Ideen und Konzepte identifizieren. Sie sind nicht auf die Identifizierung von Dokumenten beschränkt. Wenn ein URN ein Dokument darstellt, kann es von einem "Resolver" in eine URL übersetzt werden. Das Dokument kann dann von der URL heruntergeladen werden.

URI - Uniform Resource Identifier

URIs umfassen URLs, URNs und andere Methoden zum Identifizieren einer Ressource.

Ein Beispiel für einen URI, der weder eine URL noch eine URN ist, wäre ein Daten-URI wie data:,Hello%20World. Es ist weder eine URL noch eine URN, da die URI die Daten enthält. Es nennt es weder, noch sagt es Ihnen, wie Sie es über das Netzwerk finden.

Es gibt auch URCs (Uniform Resource Citations), die auf Metadaten zu einem Dokument und nicht auf das Dokument selbst verweisen. Ein Beispiel für eine URC würde eine Kennung für das Betrachten des Quellcodes einer Webseite sein: view-source:http://example.com/. Ein URC ist ein anderer URI-Typ, der weder URL noch URN ist.

Häufig gestellte Fragen

Ich habe gehört, dass ich keine URL mehr sagen soll, warum?

Die W3-Spezifikation für HTML besagt, dass das hrefeines Ankertags eine URI und nicht nur eine URL enthalten kann. Sie sollten in der Lage sein, eine URN wie <a href="urn:isbn:0451450523">. Ihr Browser würde dann diese URN in eine URL auflösen und das Buch für Sie herunterladen.

Können Browser tatsächlich Dokumente über URN abrufen?

Nicht das ich wüsste, aber moderne Webbrowser implementieren das Daten-URI-Schema.

Hat der Unterschied zwischen URL und URI irgendetwas damit zu tun, ob es relativ oder absolut ist?

Sowohl relative als auch absolute URLs sind URLs (und URIs).

Hat der Unterschied zwischen URL und URI etwas damit zu tun, ob es Abfrageparameter gibt?

Nein. Beide URLs mit und ohne Abfrageparameter sind URLs (und URIs).

Hat der Unterschied zwischen URL und URI etwas damit zu tun, ob es sich um eine Fragmentkennung handelt?

Nein. Beide URLs mit und ohne Fragment-IDs sind URLs (und URIs).

Aber sagt das W3C jetzt nicht, dass URLs und URIs dasselbe sind?

Ja. Das W3C erkannte, dass diesbezüglich eine Menge Verwirrung herrscht. Sie gaben ein URI-Klärungsdokument heraus, das besagt, dass es jetzt in Ordnung ist, die Begriffe URL und URI austauschbar zu verwenden (um URI zu bedeuten). Es ist nicht mehr sinnvoll, URIs streng in verschiedene Typen wie URL, URN und URC zu unterteilen.

Kann ein URI sowohl eine URL als auch eine URN sein?

Die Definition von URN ist jetzt lockerer als das, was ich oben angegeben habe. Der neueste RFC zu URIs besagt, dass jeder URI nun ein URN sein kann (unabhängig davon, ob er mit urn:"Eigenschaften eines Namens" beginnt ). Das heißt: Es ist weltweit einzigartig und beständig, auch wenn die Ressource nicht mehr vorhanden oder nicht mehr verfügbar ist. Ein Beispiel: Die in HTML-Doctypes verwendeten URIs wie http://www.w3.org/TR/html4/strict.dtd. Dieser URI würde weiterhin den HTML4-Übergangsdoctype benennen, selbst wenn die Seite auf der Website w3.org gelöscht würde.

Stephen Ostermiller
quelle
Was mich an der W3C-Klarstellung und der URL / URI-Unterscheidung verwirrt, ist, dass viele Webserver-Dokumente die URL als die gesamte Anforderungszeichenfolge und die URI als "den Teil, der dem Protokoll folgt" beschreiben. Es verweist sogar auf diesen Teil mit dem Variablennamen $ uri. Zum Beispiel: nginx.com/blog/creating-nginx-rewrite-rules Dies ist nach W3C-Definitionen nicht unbedingt "korrekt", wie es scheint? Aber es ist das nützlichste, was ich denke.
Mike
1
URIs wurden weitgehend missverstanden. Viele Leute dachten, ein URI sei ein Teil der URL wie eine relative URL oder folge dem Protokoll. Dies war nie richtig, aber diese Ideen haben es ziemlich oft in die Serverdokumentation oder in Programmierschnittstellen geschafft.
Stephen Ostermiller
10

Ich denke, dass diese Artikel ziemlich gut erklären. Um Ihre Frage zu beantworten - all dies ist eine URL:

http://www.bernzilla.com/item.php?id=100

Jedes Teil davon - http: www.bernzilla.comund so weiter - hat einen eigenen Namen:

  • http: ist das Schema
  • www ist die Subdomain
  • bernzilla.com ist die Domain
  • com ist die Top-Level-Domain oder TLD
  • (Es könnte einen Ordner oder Pfad geben, zB /dir/item.php, aber nicht)
  • item.php ist die Seite oder der Dateiname mit der Erweiterung php
  • id = 100 ist die Abfragezeichenfolge

Ich kann anhand des Diagramms aus Wikipedia sehen, warum Sie sich fragen. Dieses Diagramm besagt, dass es zwei Arten von URIs gibt - URLs und URNs und das unscharfe Bit in der Mitte ist, wenn etwas beides sein kann.

paulmorriss
quelle
Danke für die Antwort. Ich habe meine Frage bearbeitet. kannst du nochmal schauen
Rückgängig gemacht
Ich verstehe dieses Zitat über die Beschreibung von Anwendungen nicht und kann keinen Kommentar sehen, in dem jemand darauf hinweist. Ich werde meine Antwort aktualisieren, um die einzelnen Teile zu beschreiben.
Paulmorriss
@ Paul meinst du nicht URI in der ersten Zeile? id=100ist kein Ort , es ist ein Indikator.
DisgruntledGoat
Ich denke, ich meinte URL. Bei einigen Sites erhalten Sie, wenn Sie die ID ändern, im Normalfall unterschiedliche "Seiten". Lesen der Ressourcendefinition auf Wikipedia Ich denke, eine Seite ist ein Beispiel für eine Ressource.
Paulmorriss
7

Es ist nicht der Fall, dass die von Ihnen erwähnte URL sowohl aus einer URL als auch aus einem URN-Teil besteht.

http://www.bernzilla.com/item.php?id=100 ist sowohl eine URL als auch eine URI.

Grundsätzlich sind URIs eine Obermenge von URLs und URNs. Es gibt auch einige Überschneidungen zwischen URLs und URNs.

Ein URI identifiziert eine Ressource entweder über den Ort oder einen Namen oder beides.

Jede URL ist also eine URI, jede URN ist eine URI, aber nicht jede URI ist eine URL.

Kris
quelle