URI

Klippstein IT Service

Aus 4webmaster.de

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Eine URI ("Uniform Resource Identifier") ist eine textuelle ID aus druckbaren ASCII-Zeichen. Sie identifiziert meist eine einzelne Webseite oder einen Webservice im WWW, z.B. um einen Link auf eine bestimmte Webseite zu erzeugen.

Aufbau

http://hans:geheim@www.example.org:80/demo/example.cgi?land=de&stadt=aa#abschnitt1
Schema Benutzer Passwort Domain Port Pfad          Query               Anker

Schema

Das verwendete Schema, in der Regel der Names eines Netzwerkprotokolles, z.B. http, https oder ftp. Das Schema legt die Interpretation des restlichen Teils der URI (hinter dem Doppelpunkt) fest.

Unter anderem sind folgende Schemata definiert:

  • data – direkt eingebettete Daten
  • doi – Digital Object Identifier
  • file – Dateien im lokalen Dateisystem
  • ftp – File Transfer Protocol
  • httpHypertext Transfer Protocol
  • ldap – Lightweight Directory Access Protocol
  • mailto – E-Mail-Adresse
  • news – Newsgroup oder Newsartikel
  • sip – SIP-gestützter Sitzungsaufbau, z. B. für IP-Telefonie
  • tel – Telefonnummer
  • urn – Uniform Resource Name
  • xmpp – Extensible Messaging and Presence Protocol für Jabber Identifier
  • pop – Mailboxzugriff über POP3

Benutzername/Passwort

Falls benötigt, kann ein Login aus Benutzername und Passwort übermittelt werden. Diese werden, voneinander durch Doppelpunkt getrennt, der Domain mit einem trennenden At-Zeichen (@) vorangestellt.

Domain

Die Domain, d.h die Internet-Adresse des Host wird nach dem Domain-Schema zusammengesetzt. An ihrer Stelle kann auch eine IP-Adresse stehen.

Port

Die Angabe des Ports erlaubt die Ansteuerung eines TCP/IP-Ports. Wird kein Port angegeben, so wird der Standard-Port des jeweiligen Protokolls verwendet - z.B. bei HTTP 80, bei HTTPS 443 und bei FTP 21.

Pfad

Der Pfad beschreibt eine bestimmte Datei oder ein bestimmtes Verzeichnis auf dem Server.

Query

Die URI kann z.B. im HTTP-Protokoll nach der eigentlichen Adresse – getrennt durch ein Fragezeichen – den query string enthalten. Damit können zusätzliche Informationen übertragen werden, die serverseitig Variablen zugeordnet und weiterverarbeitet werden.

Anker

Ein Anker (Fragment) ist eine Sprungmarke innerhalb eines HTML-Dokuments. Hierdurch kann ein bestimmter Teil der Ressource bezeichnet werden. Bei HTML ist der Anker ein Name, der mit einem id-Attribut, einem name-Attribut oder einem a-Element festgelegt wurde.

URIs, IRIs, URLs und URNs

  • Eine IRI (Internationalized Resource Identifiers) erlaubt einen erweiterten Zeichensatz im Vergleich zur URI, die nur aus druckbaren ASCII-Zeichen besteht.
  • Eine URL (Uniform Resource Locator) identifiziert eine Ressource über ihren primären Zugriffsmechanismus, gibt also den Ort der Ressource im Netz an. Beispiele hierfür sind http oder ftp. URLs waren ursprünglich die einzige Art von URIs, weshalb der Begriff URL oft als gleichbedeutend zu URI verwendet wird.
  • Eine URN (Uniform Resource Name) mit dem URI-Schema urn identifiziert eine Ressource mittels eines vorhandenen oder frei zu vergebenden Namens, z. B. urn:isbn oder urn:sha1.


URL-Kodierung

Die URL-Kodierung (engl. URL encoding) ist ein Mechanismus, um Informationen in einer URI unter bestimmten Gegebenheiten zu kodieren. Die Forderung nach einer solchen Möglichkeit ergibt sich dadurch, dass einerseits einige Informationen ansonsten nicht in einer URL darstellbar wären und andererseits bestimmte Zeichen in einer URL besondere Bedeutungen haben, aber auch in einem Kontext auftreten können, in dem sie eben diese spezielle Bedeutung nicht haben sollen. RFC 3986 definiert einen Standard, wie eine URI (und damit auch eine URL) syntaktisch aufgebaut sein sollte und unter welchen Bedingungen die URL-Kodierung Anwendung findet.

Reservierte und nicht-reservierte Zeichen

URIs können quasi beliebig komplex sein:

http://joe@www.example.net:8080/index.html?cookie=y&session=A54C6FE2#info

Bestimmte Zeichen haben innerhalb dieses Ausdrucks eine besondere Bedeutung, kennzeichnen und separieren u. a. die einzelnen Segmente der URL und ermöglichen eine Zerlegung und Verarbeitung des Ausdrucks. Bei einem HTTP-Zugriff beispielsweise

  • leitet das Fragezeichen (?) den Datenteil (Query-String) der URI ein,
  • trennt das Und-Zeichen (&) URI-Parameter voneinander,
  • steht das Gleichheitszeichen (=) zwischen dem Namen eines Parameters und seinem Wert,
  • folgt dem Rautenzeichen (#) der Name eines Ankers.

Weitere Zeichen haben bestimmte Bedeutungen im Dokumentenpfad. Insgesamt gelten folgende Zeichen als reserviert:

Reserviert sind die Zeichen ! # $ % & ' ( ) * + , / : ; = ? @ [ ]

Folgende Zeichen(gruppen) sind nicht reserviert, besitzen also in einer URL definitiv keine vorgegebene besondere Bedeutung:

Frei sind die Zeichen - _ . ~ sowie Buchstaben und Ziffern


 %-Darstellung

Eine URL besteht aus den genannten reservierten und nicht-reservierten Zeichen; andere Zeichen dürfen in ihr nicht vorkommen. Es besteht jedoch prinzipiell der Bedarf, in URLs beliebige Byte-Folgen – also sämtliche Werte zwischen 0 und 255 – darstellen zu können. Zudem muss eine Möglichkeit existieren, reservierte Zeichen in einer URL derart schreiben zu können, dass sie ihre speziellen Bedeutungen verlieren (Escape-Sequenz). Die %-Darstellung von Zeichen trägt beiden Forderungen Rechnung.

Reservierte ASCII-Zeichen

Die reservierten ASCII-Zeichen werden durch eine 3-stellige Zeichenkombination repräsentiert: Das erste Zeichen ist das Prozentzeichen, es dient als Escape-Sequenz. Darauf folgt die zweiziffrige hexadezimale Darstellung des Zeichencodes.

Beispiel:

Laut ASCII ist dem Zeichen „#“ der dezimale Zeichencode 35 zugeordnet, welcher der Hexadezimalzahl 23 entspricht. Insofern stellt der Ausdruck „%23“ die %-kodierte Form des Zeichens „#“ dar.

Die Interpretation von

http://www.example.net/index.html?session=A54C6FE2#info

ist eindeutig: Hier wurden ein URL-Parameter namens session definiert, dem der Wert A54C6FE2 zugewiesen ist, sowie ein Dokumentenanker namens info angegeben. Das Zeichen „#“ hat in dem vorliegenden Kontext die besondere Bedeutung, dass ihm der Name eines Dokumentenankers folgt. Soll es diese Bedeutung verlieren, d. h. soll dem URL-Parameter session der Wert A54C6FE2#info zugewiesen werden, so muss das Zeichen „#“ in %-kodierter Form in der URL stehen:

http://www.example.net/index.html?session=A54C6FE2%23info

Nicht reservierte ASCII-Zeichen

Nicht-reservierte Zeichen können %-kodiert werden, sollten es aber nicht. Bei anderen Zeichen (u. a. Binärdaten) besteht meist gar keine andere Möglichkeit, als sie in einer URL in %-kodierter Form darzustellen (Ausnahme: reserviertes Zeichen „+“ anstelle eines Leerzeichens im sog. „Query-String“). In der Praxis wird der Mechanismus nicht immer einheitlich angewendet. Oft genug ist in URLs der Code „%7E“ zu sehen, obwohl die Tilde ein nicht-reserviertes Zeichen ohne jegliche besondere Bedeutung ist und somit nicht %-kodiert werden sollte.

Nicht-ASCII-Zeichen

Auch für die Zeichen, für die es keine ASCII-Kodierung gibt, werden die Bytes mit vorangestelltem % kodiert. Welche Bitfolge ein Zeichen jedoch darstellt, hängt von der zu benutzenden Zeichenkodierung ab. Es wird zwar vom RFC 3986 empfohlen, UTF-8 zur Kodierung zu benutzen, da dieses Format für alle internationalen Zeichen benutzt werden kann, aber einen festen Standard gibt es noch nicht. Um die URL kodieren zu können, muss man also wissen oder ahnen, welche Zeichenkodierung für die abzurufende Datei benutzt wurde oder welche Kodierung der Zielrechner benutzt. Aus diesem Grund ist es immer noch sinnvoll, nur auf Zeichen aus dem ASCII-Vorrat zurückzugreifen.

Meist wird immer noch ISO 8859-1 (auch Latin-1 genannt) für die Darstellung benutzt und dessen Zeichenwert 246 (Dezimal) direkt mit Hilfe der % Kodierung in die URL eingefügt. Der Umlaut ö wird dann als Wert %F6 dargestellt.

In der dringend empfohlenen Kodierung UTF-8 wäre der Buchstabe ö als %C3%E6 dargestellt. Alle Zeichenwerte über 127 werden in zwei drei oder vier Byte Werten repräsentiert und dem entsprechend in die %-Kodierung übernommen.

Beide Darstellungsarten liefern dem Server aber eine andere Bitfolge. Obwohl beide nach ihrer Art richtig kodiert sind, liefert nur eine davon die gewünschte Datei und die andere meist nur eine Fehlermeldung. Einige Server – wie zum Beispiel die der deutschen Wikipedia – versuchen jedoch, die Kodierung zu raten und leiten auf die richtige Datei weiter. Wenn es mit einer Kodierung nicht klappt, sollte man eine der anderen wahrscheinlichen Varianten probieren.

Eine Unterscheidung zwischen zwei einzelnen kodierten ASCII-Zeichen (z.B. %23%23 für ##) und einem 2-Byte-UTF-8-Zeichen (z.B. %C3%E6) ergibt sich aus der Art, wie UTF-8 kodiert ist. Die einzelnen Bytes ergeben für sich allein keine gültigen ASCII-Zeichen, da C3 der dezimalen 195 entspricht und E6 der 230. Da es nur 128 ASCII-Zeichen gibt, können es auch keine zwei einzelnen Zeichen sein und die Zeichen werden zusammen als UTF-kodiert angenommen. Eine Verwechslung ist somit nicht möglich. Auf einer ähnlichen Basis können einige Server auch raten, welche Kodierung in der URL verwendet wird.

MIME-Type

Mit dem MIME-Type application/x-www-form-urlencoded können URL-kodierte Daten gekennzeichnet werden. Bei der Übermittlung von Web-Formularangaben mittels der POST-Methode wird dieser MIME-Typ als Inhaltstyp Content-Typ angegeben.

Siehe auch



Weblinks

  • RFC 3986Uniform Resource Identifier (URI): Generic Syntax
  • Online-Tool zur URL-Kodierung/Dekodierung gemäß RFC 3986 (JavaScript, GPL, gilt trotz der Bezeichnung auch für URIs)
  • IANA vollständige Liste aller Schemata
  • Friendly URLs (englisch)





Dieser Artikel basiert auf dem Artikel Uniform_Resource_Identifier aus der freien Enzyklopädie Wikipedia. Er steht unter der GNU-Lizenz für freie Dokumentation. In diesem Wiki und / oder der Wikipedia ist eine Liste der Autoren verfügbar.




Dieser Artikel basiert auf dem Artikel Uniform_Resource_Locator aus der freien Enzyklopädie Wikipedia. Er steht unter der GNU-Lizenz für freie Dokumentation. In diesem Wiki und / oder der Wikipedia ist eine Liste der Autoren verfügbar.




Dieser Artikel basiert auf dem Artikel URL-Kodierung aus der freien Enzyklopädie Wikipedia. Er steht unter der GNU-Lizenz für freie Dokumentation. In diesem Wiki und / oder der Wikipedia ist eine Liste der Autoren verfügbar.


Wurde_publiziert_von::W3C