URI: URL, URN, Aufbau und Kodierung verstehen
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.
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.
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 Authorityexample.orgund dem Pfad/kurse/uribestehen. - Schema
mailto, Trennzeichen:, Pfad[email protected]bezeichnen zusammen einen E-Mail-Empfänger. - Schema
urn, Trennzeichen:, Pfadisbn:9783161484100bilden zusammen eine URN für einen Namen.
Eine URI identifiziert. Ob eine Ressource erreichbar ist, hängt von weiteren Regeln, Programmen und Diensten ab.
URI, URL und URN unterscheiden
Die drei Abkürzungen beschreiben nicht drei gleichrangige, sauber getrennte Schubladen.
| Begriff | Kerngedanke | Beispiel |
|---|---|---|
| URI | Oberbegriff: identifiziert eine Ressource | Schema mailto, Pfad [email protected] |
| URL | URI, die einen primären Zugriffsweg beziehungsweise Ort angibt | HTTPS-URI mit Host example.org und Pfad /material/uri |
| URN | URI im Schema urn, die als dauerhafter, ortsunabhängiger Name gedacht ist | Schema 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.
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.
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.
| Bestandteil | Im Beispiel | Aufgabe |
|---|---|---|
| Schema | foo | bestimmt die Regeln; endet vor : |
| Authority | example.org:8042 | nennt hier Host und Port; beginnt nach // |
| Pfad | /kurse/uri | ordnet die Ressource hierarchisch ein |
| Query | modus=kurz | ergänzt Abfragedaten; beginnt nach ? |
| Fragment | uebung | bezeichnet 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.
Trennzeichen gehören nicht zum Inhalt des folgenden Bestandteils: : trennt das Schema, // kündigt eine Authority an, ? beginnt die Query und # beginnt das Fragment.
Eine URI Schritt für Schritt prüfen
Bei einer unbekannten URI hilft dir eine feste Leserichtung.
- Suche den ersten Doppelpunkt. Links davon steht das Schema.
- Prüfe, ob danach
//folgt. Dann reicht die Authority bis zum nächsten/,?,#oder bis zum Ende. - Lies den Pfad bis zum ersten
?,#oder bis zum Ende. - Lies nach
?die Query bis zu einem möglichen#. - Lies nach
#das Fragment bis zum Ende.
Untersuche eine URI aus foo: und direkt anschließend //shop.example:8042/buch/7?format=ebook#probe.
foosteht vor dem ersten:und ist das Schema.- Nach
//folgtshop.example:8042: Hostshop.example, Port8042. /buch/7ist der Pfad.format=ebookist die Query.probeist das Fragment.
Der entscheidende Gedanke: Du trennst zuerst die Hauptbestandteile und deutest erst danach ihren Inhalt.
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.
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.
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.
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.
Basis-URI mit Schema foo, Authority example.org und Pfad /kurs/kapitel1/start.html:
bild.pngführt zum Zielpfad/kurs/kapitel1/bild.png.../kapitel2/test.htmlführt zum Zielpfad/kurs/kapitel2/test.html./hilfe/index.htmlführt zum Zielpfad/hilfe/index.htmlunter derselben Authority.#aufgabeverweist auf das Fragmentaufgabeim 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.
Karteikasten
Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.
Alles auf einen Blick
- 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
- Zweck
Mit Google fortfahren