Informatik

URI: URL, URN, Aufbau und Kodierung verstehen

URI: URL, URN, Aufbau und Kodierung verstehen
URI: URL, URN, Aufbau und Kodierung verstehen
Für Quiz, Lückentext, Lernkarten und Fortschritt ist JavaScript nötig. Alle Inhalte und Lösungen bleiben direkt lesbar.

Eine URI ist eine Zeichenfolge, die eine Ressource eindeutig bezeichnet. Sie sagt nicht automatisch, ob oder wie du diese Ressource öffnen kannst. URL und URN sind besondere Sichtweisen beziehungsweise Formen innerhalb des URI-Konzepts.

Deine Lernziele

Hake ab, was du schon kannst — und komm am Ende hierher zurück!

Was eine URI leistet

Wie kann ein Browser, ein Programm oder ein Dokument eindeutig auf etwas verweisen? Dafür braucht es einen Uniform Resource Identifier, kurz URI.

Definition

URI

Eine URI ist ein einheitlich aufgebauter Bezeichner für eine Ressource. Eine Ressource kann zum Beispiel eine Webseite, eine Datei, ein E-Mail-Empfänger, ein Buch oder auch ein abstrakter Begriff sein.

Das erste Wort vor dem Doppelpunkt heißt Schema. Es legt fest, nach welchen Regeln der Rest zu lesen ist. Deshalb sehen URIs sehr unterschiedlich aus:

  • Ein HTTPS-URL kann aus dem Schema https, der Authority example.org und dem Pfad /kurse/uri bestehen.
  • Schema mailto, Trennzeichen :, Pfad [email protected] bezeichnen zusammen einen E-Mail-Empfänger.
  • Schema urn, Trennzeichen :, Pfad isbn:9783161484100 bilden zusammen eine URN für einen Namen.
Merke

Eine URI identifiziert. Ob eine Ressource erreichbar ist, hängt von weiteren Regeln, Programmen und Diensten ab.

Teste dich
Frage 1 von 1LeichtWas leistet jede URI mindestens?
Lösung: Sie identifiziert eine Ressource. — Eine URI ist zuerst ein Bezeichner. Nur manche URI-Schemata und Nutzungssituationen legen einen Zugriff nahe.
URI, URL und URN unterscheiden

Die drei Abkürzungen beschreiben nicht drei gleichrangige, sauber getrennte Schubladen.

BegriffKerngedankeBeispiel
URIOberbegriff: identifiziert eine RessourceSchema mailto, Pfad [email protected]
URLURI, die einen primären Zugriffsweg beziehungsweise Ort angibtHTTPS-URI mit Host example.org und Pfad /material/uri
URNURI im Schema urn, die als dauerhafter, ortsunabhängiger Name gedacht istSchema urn, Pfad isbn:9783161484100

Eine einzelne URI kann Eigenschaften eines Namens und eines Ortsbezeichners verbinden. Deshalb ist die einfache Aussage „Jede URI ist entweder URL oder URN“ zu streng. In technischen Beschreibungen ist URI der sichere Oberbegriff.

Beispiel

Eine URI mit dem Schema https, dem Host example.org und dem Pfad /aktuelles/wetter ist eine URL und damit auch eine URI. Sie nennt einen Zugriffsmechanismus und einen Ort. Der Inhalt an diesem Ort kann sich ändern.

Die Zusammensetzung aus dem Schema urn, dem Trennzeichen : und dem Pfad isbn:9783161484100 ist eine URN und damit ebenfalls eine URI. Sie ist als ortsunabhängiger Name gedacht; aus ihr folgt noch kein bestimmter Server, von dem du etwas abrufen kannst.

Teste dich
Frage 1 von 1MittelWelche Aussage ist fachlich richtig?
Lösung: Jede URL ist eine URI, aber nicht jede URI muss eine URL sein. — URI ist der Oberbegriff. URL betont den Zugriffsweg oder Ort; eine URN im urn-Schema ist als dauerhafter, ortsunabhängiger Name gedacht.
Die fünf Bestandteile erkennen

Viele hierarchische URIs lassen sich in bis zu fünf Hauptbestandteile zerlegen:

Zusammengesetzt ohne Leerzeichen: Schema-Teil foo: und Rest //example.org:8042/kurse/uri?modus=kurz#uebung.

BestandteilIm BeispielAufgabe
Schemafoobestimmt die Regeln; endet vor :
Authorityexample.org:8042nennt hier Host und Port; beginnt nach //
Pfad/kurse/uriordnet die Ressource hierarchisch ein
Querymodus=kurzergänzt Abfragedaten; beginnt nach ?
Fragmentuebungbezeichnet einen Teil oder eine Ansicht; beginnt nach #

Das fiktive Schema foo dient hier nur dazu, die allgemeine Syntax sichtbar zu machen. Die Authority kann grundsätzlich Benutzerinformation, Host und Port enthalten. Zugangsdaten gehören trotzdem nicht in eine URI: URIs werden oft angezeigt, gespeichert oder protokolliert.

Nicht jede URI besitzt alle fünf Bestandteile. Schema und Pfad sind syntaktisch vorhanden, wobei der Pfad leer sein darf. Authority, Query und Fragment sind optional. Bei der Zusammensetzung aus Schema mailto, Trennzeichen : und Pfad [email protected] gibt es kein // und keine Authority.

Gut zu wissen

Trennzeichen gehören nicht zum Inhalt des folgenden Bestandteils: : trennt das Schema, // kündigt eine Authority an, ? beginnt die Query und # beginnt das Fragment.

Teste dich
Frage 1 von 2LeichtWelcher Bestandteil beginnt in der Beispiel-URI nach #?
Lösung: das Fragment — Das Fragment steht am Ende der URI und verweist auf eine sekundäre Ressource, etwa einen Abschnitt.
Frage 2 von 2MittelEine URI besteht aus foo: und direkt anschließend //example.org/suche?q=uri#treffer. Was ist der Pfad?
Lösung: /suche — Der Pfad liegt nach der Authority example.org und vor dem Fragezeichen: /suche.
Eine URI Schritt für Schritt prüfen

Bei einer unbekannten URI hilft dir eine feste Leserichtung.

  1. Suche den ersten Doppelpunkt. Links davon steht das Schema.
  2. Prüfe, ob danach // folgt. Dann reicht die Authority bis zum nächsten /, ?, # oder bis zum Ende.
  3. Lies den Pfad bis zum ersten ?, # oder bis zum Ende.
  4. Lies nach ? die Query bis zu einem möglichen #.
  5. Lies nach # das Fragment bis zum Ende.
Beispiel

Untersuche eine URI aus foo: und direkt anschließend //shop.example:8042/buch/7?format=ebook#probe.

  1. foo steht vor dem ersten : und ist das Schema.
  2. Nach // folgt shop.example:8042: Host shop.example, Port 8042.
  3. /buch/7 ist der Pfad.
  4. format=ebook ist die Query.
  5. probe ist das Fragment.

Der entscheidende Gedanke: Du trennst zuerst die Hauptbestandteile und deutest erst danach ihren Inhalt.

Teste dich
Frage 1 von 1MittelEine URI besteht aus foo: und direkt anschließend //example.org/a?ziel=b#c. Wo endet die Query?
Lösung: unmittelbar vor # — Die Query ist ziel=b. Das Fragment c beginnt mit # und gehört nicht mehr zur Query.
Zeichen richtig prozentkodieren

Einige Zeichen haben in einer URI eine Steuerfunktion oder gehören nicht zum direkt erlaubten Zeichenvorrat. Dann kann eine Prozentkodierung ein Datenbyte darstellen.

Definition

Prozentkodierung

Ein kodiertes Byte besteht aus % und genau zwei hexadezimalen Ziffern. Ein Leerzeichen entspricht im ASCII-Zeichensatz dem Bytewert hexadezimal 20 und wird daher als %20 geschrieben.

Beispiel: Aus dem Pfadbestandteil meine datei wird meine%20datei. Das Prozentzeichen selbst wird als Datenzeichen zu %25.

Bei Zeichen außerhalb des einfachen ASCII-Zeichenvorrats werden Textzeichen üblicherweise zuerst in Bytes umgewandelt. In UTF-8 wird ü durch die beiden Bytes C3 und BC dargestellt. Daher wird aus grün die Folge gr%C3%BCn.

Merke

Kodiere nur Daten innerhalb eines Bestandteils. Zerlege eine URI vor dem Dekodieren, sonst könnte ein kodiertes Trennzeichen fälschlich als Strukturzeichen behandelt werden. Kodiere oder dekodiere dieselbe Folge nicht zweimal.

Teste dich
Frage 1 von 2LeichtWelche Form ist eine gültige Prozentkodierung für ein einzelnes Byte?
Lösung: %2F — Das Muster lautet immer % plus zwei Hexadezimalziffern.
Frage 2 von 2MittelWie schreibst du den Pfadbestandteil mein plan ohne Leerzeichen?
Lösung: mein%20plan — Das Leerzeichen hat den ASCII-Bytewert hexadezimal 20; deshalb lautet die Prozentkodierung %20.
Relative Referenzen auflösen

Muss ein Verweis innerhalb eines Seitenverbunds immer die vollständige URI wiederholen? Nein. Eine relative Referenz lässt Schema und meist Authority weg. Erst zusammen mit einer Basis-URI entsteht das eindeutige Ziel.

Beispiel

Basis-URI mit Schema foo, Authority example.org und Pfad /kurs/kapitel1/start.html:

  • bild.png führt zum Zielpfad /kurs/kapitel1/bild.png.
  • ../kapitel2/test.html führt zum Zielpfad /kurs/kapitel2/test.html.
  • /hilfe/index.html führt zum Zielpfad /hilfe/index.html unter derselben Authority.
  • #aufgabe verweist auf das Fragment aufgabe im aktuellen Dokument.

Bei ../ gehst du im hierarchischen Pfad genau eine Ebene nach oben. Eine Referenz mit führendem / beginnt dagegen am Wurzelpfad derselben Authority.

Relative Referenzen erleichtern das Verschieben zusammengehöriger Dateien. Ohne bekannte Basis-URI bleiben sie jedoch mehrdeutig.

Teste dich
Frage 1 von 2MittelDie Basis hat den Pfad /a/b/start.html. Wohin führt ../test.html bei unverändertem Schema und unveränderter Authority?
Lösung: zum Pfad /a/test.html — Ersetze zuerst den letzten Pfadabschnitt start.html, steige durch ../ von /a/b/ nach /a/ auf und hänge test.html an.
Frage 2 von 2SchwerWarum kann bild.png allein kein weltweit eindeutiges Ziel festlegen?
Lösung: Die Referenz braucht eine Basis-URI, aus der Schema, Authority und Pfadkontext ergänzt werden. — Eine relative Referenz beschreibt nur eine Abweichung vom bekannten Kontext. Ohne Basis fehlen Bestandteile des Ziels.
Karteikasten
Karteikasten

Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.

Alles auf einen Blick
Mindmap
  • URI
    • Zweck
      • Ressource identifizieren
      • Zugriff nicht garantieren
    • Einordnung
      • URL: Zugriffsweg oder Ort
      • URN: ortsunabhängiger Name
    • Aufbau
      • Schema, Authority und Pfad
      • Query und Fragment
    • Verarbeitung
      • Bestandteile zuerst trennen
      • Daten bei Bedarf prozentkodieren
      • relative Referenz mit Basis auflösen
Abschluss-Check
Teste dich
Frage 1 von 4LeichtWelche Reihenfolge der fünf Hauptbestandteile ist richtig?
Lösung: Schema, Authority, Pfad, Query, Fragment — Die generische Reihenfolge lautet: Schema, optionale Authority, Pfad, optionale Query und optionales Fragment.
Frage 2 von 4MittelEine URI besteht aus foo: und direkt anschließend //example.org:8042/lernen?thema=uri#quiz. Welche Zuordnung stimmt?
Lösung: Authority example.org:8042, Pfad /lernen, Query thema=uri, Fragment quiz — Nach // folgt die Authority bis zum nächsten /. Danach grenzen ? und # Query und Fragment ab.
Frage 3 von 4SchwerEine Lernplattform speichert den Namen Grüner Plan als Pfadbestandteil. Welche Verarbeitung ist sinnvoll?
Lösung: Text in passende Bytes umwandeln und Leerzeichen sowie nicht direkt erlaubte Bytes prozentkodieren, zum Beispiel Gr%C3%BCner%20Plan bei UTF-8. — In UTF-8 wird ü zu den Bytes C3 BC; mit %20 für das Leerzeichen entsteht Gr%C3%BCner%20Plan.
Frage 4 von 4SchwerEine Basis-URI hat den Pfad /kurs/a/start.html. Welche Referenz führt bei unverändertem Schema und Host zu /kurs/b/test.html?
Lösung: ../b/test.html../ steigt von /kurs/a/ nach /kurs/ auf; anschließend ergänzt b/test.html den Zielpfad.

Passend dazu