Enthüllung von URI, URL und URN
Dieser Leitfaden gibt einen Überblick über URI, URL und URN und erklärt deren Unterschiede und Anwendungsfälle.
Bei der Entwicklung von Webanwendungen müssen wir häufig verschiedene Webdienste aufrufen. Bei der Konfiguration der Kommunikation und Verbindung zwischen verschiedenen Webdiensten stoßen wir häufig auf die Konzepte von URI, URL und URN. Normalerweise fällt es den Benutzern schwer, zwischen ihnen zu unterscheiden, was zu einer gemischten oder falschen Verwendung führt. In diesem Artikel werden wir Beispiele geben und die Unterschiede zwischen ihnen erklären, um allen zu helfen, diese Konzepte besser zu verstehen und sie beim Lesen von technischen Blogs, Dokumentationen oder bei der Kommunikation mit anderen Ingenieuren korrekt zu interpretieren und anzuwenden.
Was ist eine URL?
Eine URL (Uniform Resource Locator) gibt die Webadresse oder den Standort von Ressourcen im Internet an. Sie wird typischerweise verwendet, um den Standort von Webseiten, Dateien oder Diensten anzugeben. Eine URL bietet ein standardisiertes Format für den Zugriff auf Ressourcen im Web. Sie ist ein entscheidendes Element für das Surfen im Web, das Verknüpfen und die Kommunikation im Internet.
Eine URL besteht aus mehreren Teilen, die zusammen die Adresse der Ressource und das verwendete Protokoll zur Zugriffs darauf definieren. Lassen Sie uns die folgende URL als Beispiel analysieren und die Funktion jedes Teils der Reihe nach erklären.
-
Schema: Dies gibt das Protokoll oder Schema an, das zum Zugriff auf Ressourcen verwendet wird, wie z. B. HTTP (Hypertext Transfer Protocol), HTTPS (HTTP Secure), FTP (File Transfer Protocol) oder andere.
Das Schema in der URL ist
https
. -
Host: Host gibt den Domainnamen oder die IP-Adresse des Servers an, der die Ressourcen hostet.
Der Host in der URL ist
example.logto.io
. -
Port: (Optional) Der Port steht für eine bestimmte Portnummer auf dem Host, der auf die Ressource zugreift. Wenn kein Port angegeben ist, wird standardmäßig der für das jeweilige Schema vorgesehene Standardport verwendet.
Der Standardport für HTTP ist 80, während der Standardport für HTTPS 443 ist.
Der Port in der URL ist
8080
. -
Pfad: (Optional) Der Pfad gibt den spezifischen Standort oder das Verzeichnis auf dem Server an, in dem sich die Ressource befindet, einschließlich Verzeichnissen und Dateinamen.
Der Pfad in der URL sollte
/blogs/index.html
sein. -
Abfrageparameter: (Optional) Abfrageparameter sind zusätzliche Parameter, die an eine Ressource übergeben werden, und werden typischerweise in dynamischen Webanwendungen verwendet. Sie erscheinen nach dem Pfad und werden durch das Symbol
?
getrennt.Die Abfrageparameter in der URL lauten
params1=value1¶m2=value2
, die oft in Form von Schlüssel-Wert-Paaren dargestellt werden, wobei die Paare durch das Symbol&
getrennt sind. In realen Nutzungsfällen ist oft eine Kodierung erforderlich, um Zeichen wie Leerzeichen zu vermeiden. -
Fragmentbezeichner: (Optional) Es kann auch als Anker bezeichnet werden und wird verwendet, um eine bestimmte Position in der Ressource zu lokalisieren.
Der Anker in der URL ist
#introduction
.
Zusätzlich, zum Beispiel beim Verwenden von Dateidiensten oder vielen „Kontaktieren Sie uns“-Buttons auf Webseiten, sind sie mit URLs verlinkt, wie z. B.:
ftp://documents.logto.io/files/legal/soc_ii.pdf
mailto:[email protected]?subject=Enterprise%20quota%20request
Was ist eine URI?
URI steht für „Uniform Resource Identifier“. Es ist eine Zeichenfolge, die eine spezifische Ressource identifiziert, wie z.B. eine Webseite, Datei oder Dienst. URI bietet eine Möglichkeit, Ressourcen eindeutig zu identifizieren und zu lokalisieren, indem ein standardisiertes Format verwendet wird.
Eine URI besteht hauptsächlich aus zwei Komponenten:
- Schema: Gibt das Protokoll oder Schema an, das zum Zugriff auf die Ressource verwendet wird.
- Ressourcenbezeichner: Identifiziert die spezifische Ressource, auf die zugegriffen wird oder auf die verwiesen wird. Das Format des Ressourcenbezeichners hängt von dem verwendeten Schema ab.
Aus einer grammatikalischen Perspektive folgen URIs größtenteils dem gleichen Format wie URLs, wie in RFC 3986 angegeben.
Obwohl dieses URI-Format dem der URLs ähnelt, garantiert es keinen Zugriff auf irgendeine Ressource im Web. Die Verwendung dieses Formats kann helfen, Namenskonflikte im Namensraum zu reduzieren.
Im obigen Abschnitt haben wir URLs vorgestellt, die nicht nur eine Ressource identifizieren, sondern auch dabei helfen, diese Ressource zu lokalisieren. Daher sind URLs tatsächlich eine echte Teilmenge von URIs.
Was ist eine URN?
URN ist möglicherweise nicht so gebräuchlich wie URL und URI. Es steht für „Uniform Resource Name“, und sein Zweck ist es, Ressourcen dauerhaft zu identifizieren, selbst wenn solche Ressourcen nicht mehr existieren.
Im Gegensatz zu einer URL bietet eine URN keine Informationen darüber, wie die Ressource lokalisiert werden kann; sie identifiziert sie lediglich, ähnlich wie eine reine URI. Genauer gesagt ist eine URN eine Art URI mit dem Schema „urn“ und hat die folgende Struktur, wie in RFC 2141 beschrieben wird:
<URN>:<NID>:<NSS>
- URN: In der Regel
urn
. - Namespace Identifier (NID): Repräsentiert einen eindeutigen Namensraum oder ein Identifizierungssystem, das die URN definiert und verwaltet. Es bietet den Kontext und stellt die Einzigartigkeit des Bezeichners sicher. Beispiele für Namensräume sind ISBN (Internationale Standardbuchnummer), usw.
- Namespace Specific String (NSS): Es ist eine Zeichenfolge, die eine Ressource im angegebenen Namensraum eindeutig identifiziert. Der Bezeichner selbst vermittelt keine Informationen über den Standort oder die Zugriffsmethode der Ressource.
Zum Beispiel hat ein sehr bekanntes Buch, das Computersysteme einführt, CSAPP seine ISBN-Nummer, die als URN urn:isbn:9780134092669
dargestellt wird.
URNs werden häufig in verschiedenen Standardprotokollen verwendet, wie z. B. der Assertion im SAML-Protokoll, das der URN urn:oasis:names:tc:SAML:2.0:assertion
entspricht.
In der Softwareentwicklung können wir auch URNs für bestimmte Zwecke in unseren eigenen Systemen gemäß den URN-Namensregeln definieren. Zum Beispiel muss in Logto, um Organisationen zu aktivieren, der urn:logto:scope:organizations
-Scope in der Konfiguration hinzugefügt werden, wenn das SDK verwendet wird. Jede Organisation hat auch ihre eigene spezifische URN urn:logto:organization:{orgId}
.
Fazit
Die Beziehung zwischen URI, URL und URN kann durch das folgende Venn-Diagramm veranschaulicht werden:
URI, URL und URN können alle verwendet werden, um verschiedene Ressourcen zu identifizieren, aber nur die URL kann den genauen Standort der Ressource angeben.
URI und URL können verschiedene Schemata unterstützen, wie HTTP, HTTPS, FTP, aber URN kann als nur das urn
-Schema unterstützend betrachtet werden.
Alle URLs oder URNs sind URIs, aber nicht alle URIs sind URLs oder URNs.