Zuletzt aktualisiert am 05.12.2025 8 Minuten Lesezeit

URI

URI steht für Uniform Resource Identifier und bezeichnet eine standardisierte Zeichenkette zur eindeutigen Identifizierung von Ressourcen. Der Begriff wurde 1994 von Tim Berners-Lee eingeführt und ist in RFC 3986 spezifiziert.

Ein URI kann eine abstrakte oder physische Ressource identifizieren - von einer Webseite über eine E-Mail-Adresse bis hin zu einem Buch. Du begegnest URIs täglich, denn jede URL, die du in deinen Browser eingibst, ist eine spezielle Form eines URI.

Was ist der Unterschied zwischen URI, URL und URN?

Diese drei Begriffe werden oft verwechselt oder falsch verwendet. Das Verständnis ihrer Beziehung zueinander ist fundamental für die Arbeit mit Web-Technologien. Der Schlüssel liegt in der Hierarchie: URI ist der Oberbegriff, während URL und URN spezielle Ausprägungen sind.

URI als Oberbegriff

Ein URI (Uniform Resource Identifier) ist jede Art von Kennung, die eine Ressource eindeutig identifiziert. RFC 3986 definiert die allgemeine Syntax, die für alle URIs gilt. Ein URI kann eine Ressource auf zwei Arten identifizieren: durch ihre Lokation (wo sie sich befindet) oder durch ihren Namen (wie sie heißt).

URL - Lokalisierung einer Ressource

Eine URL (Uniform Resource Locator) ist ein URI, der eine Ressource durch ihren Zugriffsweg identifiziert. Sie gibt an, wo sich eine Ressource befindet und wie du darauf zugreifen kannst. Jede Webadresse, die du im Browser verwendest, ist eine URL.

https://ausbildung-in-der-it.de/lexikon/uri
mailto:info@example.de
ftp://files.example.com/downloads/datei.zip

URN - Benennung einer Ressource

Ein URN (Uniform Resource Name) ist ein URI, der eine Ressource durch einen eindeutigen, persistenten Namen identifiziert - unabhängig von ihrem Standort. URNs bleiben gültig, auch wenn die Ressource verschoben wird oder nicht mehr verfügbar ist. Sie sind wie ein Eigenname für eine Ressource.

urn:isbn:978-3-446-44285-6
urn:ietf:rfc:3986
urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6

Vergleich: URI vs. URL vs. URN

Die folgende Tabelle zeigt die wesentlichen Unterschiede zwischen den drei Konzepten:

Aspekt URI URL URN
Funktion Identifiziert eine Ressource Lokalisiert und ermöglicht Zugriff Benennt persistent
Enthält Standort Möglich Ja, immer Nein
Enthält Protokoll Möglich Ja, immer Nein (beginnt mit urn:)
Beispiel Beide Formen https://example.de urn:isbn:123456

Eine nuetzliche Analogie: Stell dir eine Person vor. Der URN ist ihr Name (Max Mustermann), die URL ist ihre Adresse (Musterstrasse 1, 12345 Musterstadt), und URI ist der Oberbegriff für beide Identifikationsarten.

Syntax und Aufbau eines URI

RFC 3986 definiert eine generische URI-Syntax, die aus fuenf Hauptkomponenten besteht. Nicht alle Komponenten müssen in jedem URI vorhanden sein - die einzig erforderliche ist das Schema.

schema:[//authority]path[?query][#fragment]

Schema (Scheme)

Das Schema steht am Anfang eines URI, gefolgt von einem Doppelpunkt. Es gibt an, welche Regeln für die Interpretation des restlichen URI gelten. Bei URLs bezeichnet es typischerweise das Zugriffsprotokoll.

  • https / http - Webseiten (Hypertext Transfer Protocol)
  • ftp - Dateitransfer (File Transfer Protocol)
  • mailto - E-Mail-Adressen
  • tel - Telefonnummern
  • file - Lokale Dateien
  • urn - Persistent benannte Ressourcen
  • data - Eingebettete Daten (Base64)

Authority

Die Authority-Komponente beginnt mit zwei Schrägstrichen (//) und enthält typischerweise den Hostnamen oder die IP-Adresse des Servers. Optional können auch Benutzerinformationen und ein Port angegeben werden:

//[userinfo@]host[:port]

# Beispiele:
//www.example.de
//benutzer:passwort@server.example.de:8080
//192.168.1.1:3000

Der Host kann ein DNS-Domainname oder eine IP-Adresse sein. Der Port wird durch einen Doppelpunkt vom Host getrennt und gibt den Netzwerk-Port für die Verbindung an.

Path

Der Pfad identifiziert eine spezifische Ressource innerhalb des durch die Authority definierten Bereichs. Bei hierarchischen URIs werden Segmente durch Schrägstriche getrennt, ähnlich wie Ordner in einem Dateisystem:

/lexikon/uri-uniform-resource-identifier
/api/v2/users/123
/downloads/dokumente/handbuch.pdf

Query

Die Query-Komponente beginnt mit einem Fragezeichen (?) und enthält nicht-hierarchische Daten, meist in Form von Schlüssel-Wert-Paaren. Sie wird häufig für Suchparameter, Filter oder Konfigurationsoptionen verwendet:

?suche=uri&sortierung=relevanz&seite=1
?id=12345
?utm_source=newsletter&utm_medium=email

Fragment

Das Fragment (auch Anker genannt) beginnt mit einem Rautezeichen (#) und verweist auf einen spezifischen Teil innerhalb der Ressource. Ein wichtiger Unterschied: Das Fragment wird nicht an den Server gesendet, sondern ausschließlich vom Client (Browser) verarbeitet.

https://example.de/artikel#kapitel-3
https://example.de/dokument.html#section-2.1

Vollständiges URI-Beispiel

Das folgende Beispiel zeigt einen URI mit allen möglichen Komponenten:

https://benutzer:passwort@www.example.de:8080/pfad/zur/seite?parameter=wert&filter=aktiv#abschnitt
|_____|  |_______________|  |____________|____|  |_________|  |________________________|  |_______|
 Schema     Userinfo           Host       Port      Path              Query               Fragment
        |_________________________________________|
                        Authority

In der Praxis sehen die meisten URIs deutlich einfacher aus. Eine typische Web-URL wie https://ausbildung-in-der-it.de/lexikon enthält nur Schema, Host und Pfad.

URI-Referenzen und Auflösung

Neben vollstaendigen URIs gibt es auch URI-Referenzen, die relativ zu einem Basis-URI interpretiert werden. Diese relativen Referenzen sind in der Webentwicklung besonders wichtig, da sie das Erstellen von Links innerhalb einer Website vereinfachen.

Absolute vs. relative URI-Referenzen

Eine absolute URI-Referenz ist ein vollstaendiger URI mit Schema. Eine relative URI-Referenz enthält nur einen Teil und wird gegen einen Basis-URI aufgelöst:

# Basis-URI:
https://example.de/verzeichnis/seite.html

# Relative Referenzen und ihre Auflösung:
"andere-seite.html"      -> https://example.de/verzeichnis/andere-seite.html
"/root/pfad"             -> https://example.de/root/pfad
"../oberhalb"            -> https://example.de/oberhalb
"?neuer-query"           -> https://example.de/verzeichnis/seite.html?neuer-query
"#neues-fragment"        -> https://example.de/verzeichnis/seite.html#neues-fragment
"//anderer-server.de"    -> https://anderer-server.de

RFC 3986 definiert einen präzisen Algorithmus zur Auflösung relativer Referenzen. Browser und Programmiersprachen implementieren diesen Algorithmus, sodass du relative Links ohne manuelle Berechnung verwenden kannst.

URI-Encoding (Prozent-Kodierung)

URIs dürfen nur eine begrenzte Menge an Zeichen enthalten. Sonderzeichen, Umlaute und andere nicht erlaubte Zeichen müssen durch Prozent-Kodierung (Percent-Encoding) dargestellt werden. Dabei wird jedes Byte des Zeichens als %HH kodiert, wobei HH der hexadezimale Wert ist.

Reservierte und nicht-reservierte Zeichen

RFC 3986 unterscheidet zwischen reservierten und nicht-reservierten Zeichen. Reservierte Zeichen haben innerhalb eines URI eine spezielle Bedeutung als Trennzeichen:

Reservierte Zeichen (Trennfunktion):
: / ? # [ ] @ ! $ & ' ( ) * + , ; =

Nicht-reservierte Zeichen (immer erlaubt):
A-Z a-z 0-9 - . _ ~

Wenn du ein reserviertes Zeichen als Daten (nicht als Trennzeichen) verwenden möchtest, muss es kodiert werden. Umlaute und andere Nicht-ASCII-Zeichen werden in UTF-8 konvertiert und dann prozent-kodiert.

Beispiele für URI-Encoding

Zeichen Kodiert Beschreibung
Leerzeichen %20 Häufigste Kodierung
ae %C3%A4 Deutscher Umlaut (UTF-8)
oe %C3%B6 Deutscher Umlaut (UTF-8)
ue %C3%BC Deutscher Umlaut (UTF-8)
& %26 Kaufmanns-Und
/ %2F Schrägstrich (als Daten)
? %3F Fragezeichen (als Daten)
# Beispiel: Suche nach "Prüfung IHK 2024"
https://example.de/suche?q=Pr%C3%BCfung%20IHK%202024

URIs in der Softwareentwicklung

URIs spielen in der modernen Softwareentwicklung eine zentrale Rolle. Sie sind nicht nur Webadressen, sondern dienen als universelle Identifikatoren in vielen Bereichen der IT.

URIs in REST-APIs

In REST-APIs identifizieren URIs Ressourcen, während HTTP-Methoden die Aktionen definieren. Ein gut gestaltetes URI-Schema ist essentiell für eine verständliche API:

GET    /api/users           # Alle Benutzer abrufen
GET    /api/users/123       # Benutzer mit ID 123
POST   /api/users           # Neuen Benutzer erstellen
PUT    /api/users/123       # Benutzer 123 aktualisieren
DELETE /api/users/123       # Benutzer 123 löschen
GET    /api/users/123/orders  # Bestellungen von Benutzer 123

URIs als Namensräume

In XML und RDF (Resource Description Framework) werden URIs als Namensräume verwendet, um Elemente eindeutig zu identifizieren. Auch wenn diese URIs oft wie URLs aussehen, müssen sie nicht unbedingt auflösbar sein:

<root xmlns="http://example.org/schema/2024"
      xmlns:custom="http://example.org/custom">
  <custom:element>Wert</custom:element>
</root>

URI-Verarbeitung in Programmiersprachen

Alle gängigen Programmiersprachen bieten Bibliotheken zur Verarbeitung von URIs. Hier ein Beispiel in JavaScript:

const uri = new URL('https://example.de/pfad?name=wert#abschnitt');

console.log(uri.protocol);    // "https:"
console.log(uri.hostname);    // "example.de"
console.log(uri.pathname);    // "/pfad"
console.log(uri.search);      // "?name=wert"
console.log(uri.hash);        // "#abschnitt"

// Query-Parameter manipulieren
uri.searchParams.append('neu', 'parameter');
console.log(uri.href);  // "https://example.de/pfad?name=wert&neu=parameter#abschnitt"

Geschichte und Standards

Die Geschichte der URIs ist eng mit der Entwicklung des World Wide Web verbunden. Tim Berners-Lee führte das Konzept 1994 als Teil seiner Vision eines universellen Informationsraums ein.

Wichtige RFC-Dokumente

Die Entwicklung der URI-Standards lässt sich anhand der IETF RFCs nachvollziehen:

  • RFC 1630 (1994): Erste Dokumentation von URIs als informelles Dokument
  • RFC 2396 (1998): Erste formale URI-Spezifikation, führte die generische Syntax ein
  • RFC 3986 (2005): Aktuelle und maßgebliche URI-Spezifikation, Internet-Standard STD 66
  • RFC 3987 (2005): IRI-Spezifikation (Internationalized Resource Identifiers) für nicht-ASCII-Zeichen

RFC 3986 ist heute der maßgebliche Standard für URIs. Er wurde als Internet-Standard (STD 66) veröffentlicht, was seine fundamentale Bedeutung für das Internet unterstreicht.

URIs in der IT-Praxis

Das Verständnis von URIs ist fundamental für die Arbeit im IT-Bereich. Als Fachinformatiker für Anwendungsentwicklung entwirfst du URI-Schemata für APIs, verarbeitest Benutzer-Eingaben und implementierst Routing in Web-Frameworks. Die korrekte Handhabung von URI-Encoding ist dabei essentiell, um Sicherheitslücken wie Injection-Angriffe zu vermeiden.

Als Fachinformatiker für Systemintegration begegnest du URIs bei der Konfiguration von Webservern, Proxy-Einstellungen und beim Debugging von Netzwerkproblemen. Das Verstehen der URI-Struktur hilft dir, Fehler in Webanwendungen schneller zu diagnostizieren.

Quellen und weiterführende Links