Uniform Resource Identifier
Uniform Resource Identifier (URI)
Beschreibung
Ein Uniform Resource Identifier (Abk. URI, für einheitlicher Bezeichner für Ressourcen) ist ein Identifikator und besteht aus einer Zeichenfolge, die zur Identifizierung einer abstrakten oder physischen Ressource dient. URIs werden zur Bezeichnung von Ressourcen (wie Webseiten, sonstigen Dateien, Aufruf von Webservices, aber auch E-Mail-Empfängern) im Internet und dort vor allem im WWW eingesetzt. Der aktuelle Stand 2016 ist als RFC 3986 publiziert
Ursprünglich führte Tim Berners-Lee den Begriff 1994 im RFC 1630 als Universal Resource Identifier ein. Erst später tauchte dann in offiziellen W3C-Dokumenten die Auflösung Uniform auf. Aus diesem Grund wird Universal gelegentlich – selbst in der Fachliteratur – als erster Namensbestandteil genannt
URIs können als Zeichenfolge (kodiert mit einem Zeichensatz) in digitale Dokumente, insbesondere solche im HTML-Format eingebunden oder auch von Hand auf Papier aufgeschrieben werden. Einen Verweis von einer Webseite auf eine andere nennt man Hyperlink oder kurz „Link“
Eine Erweiterung der nur aus druckbaren ASCII-Zeichen bestehenden URIs sind die Internationalized Resource Identifiers (IRIs)
Konzeption
Ein URI (oder in der Erweiterung IRI) ist das abstrakte Prinzip, die Syntax, einer Kennzeichnung, bei dem ein Satz an Regeln vorgegeben ist. Dieses Grundkonzept der URI wird dann auf verschiedene konkrete Anwendungsbereiche übertragen, für die dann die entsprechenden Regeln und Begriffe gelten
Beispiel
- URI dürfen keine Leerzeichen enthalten
- Zu Beginn steht der Name eines Schemas in ASCII-Buchstaben und Ziffern, gegebenenfalls gegliedert durch Punkt und Bindestrich, beginnend mit Buchstaben, worauf ein Doppelpunkt folgt
Typen von Anwendungen
Name | Der Inhalt einer Ressource (und damit jede inhaltsgleiche Kopie) erhält eine eindeutige Kennung
|
Locator | Der Ort einer Ressource ist über ihren Bezeichner definiert. Sie wird also darüber identifiziert, wo sie zu finden ist; es wird damit jedoch nicht zwangsläufig ihr Inhalt festgelegt
|
Individuum | Die Regeln der URI können auch angewendet werden, wenn etwas überhaupt keine klassische Ressource ist, trotzdem identifiziert werden soll
|
- Beispiele
E-Mail-Adresse, Nummer eines Mobiltelefons, Reisepass sowie die legitime Inhaberin, Sozialversicherungsnummer, Fingerabdruck und der Mensch dazu Im Januar 2005 wurde mit RFC 3986 das Konzept der Ressource im Sinne der URI auch noch um abstrakte Konzepte erweitert: Vorlage:Zitat
Aufbau
Nach dem aktuellen Standard RFC 3986 besteht ein URI aus fünf Teilen: scheme (Schema oder Protokoll), authority (Anbieter oder Server), path (Pfad), query (Abfrage) und fragment (Teil), wovon nur scheme und path in jedem URI vorhanden sein müssen. Die generische Syntax ist:
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
Dabei steht hier-part (hierarchischer Teil) für eine optionale authority und den path. Ist die Angabe einer authority erforderlich, um die Ressource letztlich zu verorten, so wird sie durch doppelten Schrägstrich eingeleitet und die darauf folgende Pfadangabe muss mit einem Schrägstrich beginnen. Der Standard verdeutlicht diese Komponenten mit zwei Beispielen:
foo://example.com:8042/over/there?name=ferret#nose \_/ \________________/\_________/ \_________/ \__/ | | | | | scheme authority path query fragment | _____________________|__ / \ / \ urn:example:animal:ferret:nose
Schema
- Schema (Scheme)
Das Schema (der Teil vor dem Doppelpunkt) definiert den Kontext und bezeichnet so den Typ des URIs, was die Interpretation des folgenden Teils festlegt. Bekannte Schemata sind beispielsweise die Protokolle http und ftp sowie Notationskonzepte wie urn und doi. Mit dem Doppelpunkt endet der erste obligatorische Teil des URI. Gibt es keinen Bezug auf eine die Namensverwaltung organisierende (aktive) Autorität, so folgt direkt auf diesen Doppelpunkt der Pfad zur Verortung der Ressource
Authority
- Authority (im Sinne von Zuständigkeit)
Viele URI-Schemata wie http oder ftp haben einen authority-Teil. Der Begriff authority bezieht sich auf eine Instanz, die die Namen in diesem (vom Schema angegebenen Interpretations-) Raum zentral verwalten kann. Ein Beispiel dafür ist das Domain Name System, das von globalen und lokalen Registraren verwaltet wird
Die authority besteht aus einer optionalen Benutzerinformation (gefolgt von einem ‚@‘), dem Host und einer optionalen (durch einen Doppelpunkt eingeleiteten) Port-Angabe. Sie folgt auf zwei Schrägstriche (//) und wird von einem einfachen Schrägstrich (/), einem Fragezeichen (?), einem Doppelkreuz (#) oder dem Ende des URIs begrenzt. Der Host-Teil kann aus einer IP-Adresse, einer IPv6-Adresse (in eckigen Klammern ‚[…]‘) oder einem registrierten Namen bestehen
- Beispiele für gültige Werte
- de.wikipedia.org
- user@example.com:8080
- 192.0.2.16:80
- [2001:db8::7]
Die mögliche Angabe von Benutzername und Kennwort in der Benutzerinformation (user:password@…) wird in RFC 3986 (Abschnitt 3.2.1) als überholt bezeichnet und sollte nicht mehr verwendet werden, da URIs oft im Klartext übertragen und protokolliert werden
Pfad
- Pfad (Path)
Der Pfad enthält – oft hierarchisch organisierte – Angaben, die zusammen mit dem Abfrageteil eine Ressource identifizieren. Falls in der URI eine im vorangegangenen Abschnitt beschriebene authority angegeben wurde, muss der path mit einem Schrägstrich (/) beginnen; gibt es keine authority, darf der path nicht mit einem doppelten Schrägstrich (//) beginnen. Dadurch ist die eindeutige Interpretation gesichert. Er wird von einem Fragezeichen (?), einem Doppelkreuz (#) oder dem Ende des URI begrenzt. Gültige Pfade sind beispielsweise:
- /over/there
- example:animal:ferret:nose
Abfrage
- Abfrage (Query)
Der Abfrageteil (Query-String) beinhaltet Daten zur Identifizierung von solchen Ressourcen, deren Ort durch die Pfadangabe allein nicht genau angegeben werden kann. Sie müssen aus der durch den Pfad bezeichneten Quelle, durch ebendiese Abfrage wie ein Datensatz aus einer Datenbank abgerufen werden. Er wird mit einem Fragezeichen (?) eingeleitet und von einem Doppelkreuz (#) oder dem Ende des URI begrenzt. Eine gültige Abfrage nach dem ‚?‘ ist beispielsweise:
- title=Uniform_Resource_Identifier&action=submit
Hier spielen ‚&‘ und ‚=‘ etwa die gleiche Rolle wie ‚.‘ und ‚:‘ im Teil für die authority
Fragment
fragment ist der optionale Fragmentbezeichner und referenziert eine Stelle innerhalb einer Ressource. Der Fragmentbezeichner bezieht sich immer nur auf den unmittelbar vorangehenden Teil des URI und wird von einem Doppelkreuz (#) eingeleitet. Ein Beispiel dafür ist der Anker in HTML
Beispiele
- https://de.wikipedia.org/wiki/Uniform_Resource_Identifier
- ftp://ftp.is.co.za/rfc/rfc1808.txt
- file:///C:/Users/Benutzer/Desktop/Uniform%20Resource%20Identifier.html
- file:///etc/fstab
- geo:48.33,14.122;u=22.5
- ldap://[2001:db8::7]/c=GB?objectClass?one
- gopher://gopher.floodgap.com
- mailto:John.Doe@example.com
- sip:911@pbx.mycompany.com
- news:comp.infosystems.www.servers.unix
- data:text/plain;charset=iso-8859-7,%be%fa%be
- tel:+1-816-555-1212
- telnet://192.0.2.16:80/
- urn:oasis:names:specification:docbook:dtd:xml:4.1.2
- git://github.com/rails/rails.git
- crid://broadcaster.com/movies/BestActionMovieEver
Ein Beispiel mit sehr vielen Elementen gleichzeitig in der URI:
- http://nobody:password@example.org:8080/cgi-bin/script.php?action=submit&pageid=86392001#section_2
URI-Referenzen
Oft verwenden Anwendungen nicht den vollständigen URI, sondern eine abgekürzte Syntax, beispielsweise um Platz zu sparen oder den einfachen Umzug auf andere Server zu ermöglichen. Manche URI-Schemata begrenzen in ihrer Definition zudem die Syntax auf eine bestimmte Form. Unter dem Begriff der URI-Referenzen werden unterschiedliche Schreibweisen zusammengefasst
Absolute URIs
Ein absoluter URI identifiziert eine Ressource unabhängig vom Kontext der Verwendung des URI
Er besteht mindestens aus scheme und hier-part (also einer authority und/oder einem path) Beispiele sind:
- https://de.wikipedia.org
- file://localhost/var/spool/dump.bin
Relative Referenz
Im Gegensatz zu einem absoluten URI beschreibt ein relativer URI nur die Abweichung zwischen dem absoluten URI einer Ressource und dem aktuellen Kontext in einem hierarchischen Namensraum Wenn eine URI-Referenz nicht mit einem scheme beginnt, wird angenommen, dass es sich um eine relative Referenz handelt. Die Auflösung einer relativen Referenz zu einem absoluten URI erfolgt abhängig vom Kontext nach standardisierten Regeln. Eine relative Referenz besteht aus einem path sowie optional aus query und fragment
- Es werden drei Arten von relativen Referenzen unterschieden
- Beginnt der Pfad ohne Schrägstrich, handelt es sich um eine relative Pfad-Referenz, beispielsweise image.png, ./image.png und ../images/image.png
- Beginnt der Pfad mit einem einzelnen Schrägstrich (/), handelt es sich um eine absolute Pfad-Referenz
- Beginnt der Pfad mit doppelten Schrägstrichen (//), handelt es sich um eine Netzwerk-Pfad-Referenz
Referenz innerhalb desselben Dokumentes
URI-Referenzen können auf dasselbe Dokument verweisen, dessen Teil sie sind. Die häufigste Anwendung ist das Doppelkreuz (#), gefolgt von einem Fragment-Bezeichner
Suffix-Referenzen
Weit verbreitet ist die Angabe von URI-Referenzen des Internets ohne Bezeichnung des Protokolls (des Schemas), etwa www.wikipedia.de. Unter der Annahme, dass sich aus dem Suffix (im Beispiel www, DNS-Namen werden von rechts nach links aufgebaut) auf das Protokoll (hier http) schließen lässt, funktioniert die Auflösung solcher Referenzen. Allerdings ist diese Auflösung von entsprechenden Annahmen und zudem von der jeweiligen Software abhängig. Deshalb sollten Suffix-Referenzen vermieden werden
Schemata
Unter anderem sind folgende Schemata definiert:
Schema | Beschreibung |
---|---|
crid | Content Reference Identifier (für Fernsehsendungen) |
data | Data-URL: direkt eingebettete Daten |
file | Dateien im lokalen Dateisystem |
ftp | File Transfer Protocol |
geo | Geografische Koordinaten |
gopher | Gopher |
http | Hypertext Transfer Protocol |
ldap | Lightweight Directory Access Protocol |
mailto | E-Mail-Adresse |
news | Newsgroup oder Newsartikel |
pop | Mailboxzugriff über POP3 |
rsync | Synchronisation von Daten mit rsync |
sip | SIP-gestützter Sitzungsaufbau, z. B. für IP-Telefonie |
tel | Telefonnummer |
telnet | Telnet |
urn | Uniform Resource Names (URNs) |
ws | WebSocket |
wss | |
xmpp | Extensible Messaging and Presence Protocol für Jabber Identifier |
Auf der Website der Internet Assigned Numbers Authority (IANA) befindet sich eine vollständige Liste der offiziellen Schemata
Daneben haben sich einige inoffizielle, von der IANA auch als „vorläufig“ bezeichnete, Schemata für einzelne Anwendungen oder gängige Protokolle etabliert:
Schema | Beschreibung |
---|---|
about | browserinterne Informationen |
afp | Apple Filing Protocol |
apt | Advanced Packaging Tool |
callto | Telefonnummern (u. a. Skype und NetMeeting) |
coffee | Hyper Text Coffee Pot Control Protocol |
daap | Digital Audio Access Protocol |
doi | Digital Object Identifier |
ed2k | ED2k-URI-Schema von eDonkey2000/Kademlia |
feed | Web-Feeds |
finger | Finger |
fish | Files transferred over Shell protocol |
git | Git |
irc/ircs | Internet Relay Chat |
itunes | iTunes |
javascript | Ausführung von JavaScript-Code |
lastfm | Last.fm |
magnet | Magnet-Link |
mms | Microsoft Media Server |
rtmp | Real Time Messaging Protocol |
sftp | SSH File Transfer Protocol |
skype | Telefonnummern (nur Skype) |
smb | Server Message Block |
ssh | Secure Shell |
svn/svn+ssh | Apache Subversion |
view-source | Quelltextanzeige für eine Webseite |
webcal | iCalendar |
wyciwyg | What You Cache Is What You Get, Firefox-interne Anzeige für die Darstellung gecachter Inhalte |
ymsgr | Yahoo Messenger |
Unterarten
Uniform Resource Locator (URL) | Benennen eine Ressource über ihren primären Zugriffsmechanismus wie http oder ftp. Danach folgt die Bezeichnung des Ortes () der Ressource im Netz – meistens der Domain-Name. URLs waren ursprünglich die einzige Art von URIs, weshalb der Begriff URL oft gleichbedeutend mit URI verwendet wird |
Uniform Resource Name (URN) | Mit dem URI-Schema urn (oder ggf. anderer) eine Ressource identifizieren mittels eines vorhandenen oder frei zu vergebenden Namens, beispielsweise urn:isbn oder urn:sha1 |
Ursprünglich sollte jeder URI in eine dieser beiden Klassen (oder weitere noch zu definierende) eingeteilt werden. Diese strenge Aufteilung wurde jedoch aufgegeben, da sie unnötig ist und einige Schemata (wie data oder das früher den URLs zugeordnete mailto) in keine der beiden Klassen passen
Anhang
Siehe auch
Links
RFC
RFC | Titel |
---|---|
3986 | Uniform Resource Identifier (URI): Generic Syntax |
1630 | Universal Resource Identifiers in WWW |
8820 | URI Design and Ownership |
Weblinks
- https://de.wikipedia.org/wiki/Uniform_Resource_Identifier
- Web Naming and Addressing
- Uniform Resource Identifier (URI) Schemes – Liste der URI-Schemata bei der Internet Assigned Numbers Authority (IANA)
- Tim Berners-Lee: Cool URIs Don’t Change
- Web Naming and Addressing. W3C (englisch)
- Uniform Resource Identifier (URI) Schemes. Internet Assigned Numbers Authority (IANA) – Liste der URI-Schemata (englisch)
- Tim Berners-Lee: Cool URIs Don’t Change. W3C (englisch)