117 lines
5.7 KiB
TeX
117 lines
5.7 KiB
TeX
|
|
\chapter{URLs und URIs}\label{sec:url_uri}\index{URL}
|
|
\acfp{URL} sind eine Teilmenge der \acfp{URI}.
|
|
|
|
\begin{description}
|
|
\item[\acs{URL}] Die Adresse einer Ressource (mit allen relevanten Informationen). \newline
|
|
Beispiel für URL (und damit auch für URI): \pfad{http://www.dhbw-karlsruhe.de/}
|
|
|
|
\item[\acs{URI}] Gibt Informationen, wie eine Ressource erreicht werden kann. \newline
|
|
Beispiel für URI (aber nicht für eine URL): \pfad{mailto:xyz@dhbw-karlsruhe.de}
|
|
\end{description}
|
|
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
|
|
\section{\acl{URI} (URI)}\index{URI}
|
|
Allgemeines Format einer URI: \code{schema:info}
|
|
|
|
Beispiele für \code{schema}:
|
|
|
|
\begin{itemize}[noitemsep]
|
|
\item \code{mailto} Info ist die E-Mail Adresse
|
|
\item \code{news} Info ist die Newsgroup (und evtl. Artikel-ID)
|
|
\item \code{http} Info ist Rest der Adresse
|
|
\end{itemize}
|
|
|
|
Falls \code{schema} = Anwendungsprotokoll $\Rightarrow$ URI ist eine URL.
|
|
|
|
\section{\acl{URL} (URL)}
|
|
|
|
Format einer \acs{URL}:\newline
|
|
\code{protocol://[uid[:pw]@]host[:port]/[directory/][resource][?parameter][\#anchor]}
|
|
|
|
\begin{description}
|
|
\item[\code{protocol}] Das Anwendungsprotokoll der Anwendung, \zB http, https, ftp)
|
|
\item[\code{uid}] User-ID, Benutzername (für zugriffsbeschränkte Ressourcen)
|
|
\item[\code{pw}] Passwort (in Browsern aus Sicherheitsgründen meist nicht implementiert)
|
|
\item[\code{host}] Name (\acs{FQDN}) oder IP-Adresse des Webservers.
|
|
\item[\code{port}] Portnummer (positive ganze Zahl).\newline
|
|
Falls nicht angegeben, so ist der Default-Port abhängig vom verwendeten
|
|
Protokoll (\zB HTTP auf Port 80, HTTPS auf Port 443)
|
|
\item[\code{/}] Der abschließende Schrägstrich (könnte auch als Pfad zur Ressource interpretiert werden).
|
|
|
|
\item[directory] Verzeichnis. Falls nicht angegeben $\Rightarrow$ Wurzelverzeichnis (\enquote{root directory}).
|
|
|
|
\item[resource] Name der Ressource im jeweiligen Verzeichnis (meist bestehend aus Name und File-Extension). Falls nichts angegeben wird, so entscheidet der Webserver über die auszuliefernde Ressource (\zB eine Default-Datei \pfad{index.html}, eine Verzeichnisauflistung oder eine Fehlermeldung).
|
|
|
|
\item[\code{parameter}] Liste von \code{GET}-Parametern in der Form\newline \code{parametername=parameterwert[\¶name2=parawert2[\&\ldots]]} (potentiell beliebig viele Parameter, beschränkt durch max. Länge aus URL\footnote{siehe \url{http://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers}}).
|
|
|
|
\item[\code{anchor}] Anker: Textstelle, zu welcher der Browser direkt springt.\newline
|
|
|
|
\end{description}
|
|
|
|
\begin{Achtung}
|
|
Der Anker (\code{\#xyz}) wird beim Request nicht an den Server mitgeschickt! \code{anchor} wird lokal im Browser ausgewertet, \zB durch JavaScript. PHP, welches serverseitig arbeitet, kann dies nicht auswerten.
|
|
\end{Achtung}
|
|
|
|
\subsection{Relative URLs}\label{sec:relative_url}
|
|
Es können auch relative \acsp{URL} angegeben werden, die jedoch mithilfe der vollständigen \acs{URL} des enthaltenden Dokuments ebenfalls zu einer vollständigen (absoluten) \acs{URL} gemacht werden! Es wird zwischen folgenden relativen URLs unterschieden:
|
|
|
|
\begin{description}
|
|
\item[Protokoll-relative URL] beginnt mit \pfad{//...}, \pfad{host/...} (\zB HTTPS)\index{URL!Protokoll-relativ}
|
|
\item[Host-relative] (Pfad-absolute) URL: beginnt mit \pfad{/pfad...} (\zB Verweis auf zentrale Dokumente auf demselben Server wie das Impressum oder die Einstiegsseite)\index{URL!Host-relativ}\index{URL!Pfad-absolut}
|
|
\item[Pfad-relative URL] beginnt mit \pfad{pfad} (ohne Schrägstrich am Anfang; Verweis auf logisch zusammenhängende Ressourcen im selben Verzeichnis oder Unter-/Oberverzeichnis)\index{URL!Pfad-relativ}
|
|
\end{description}
|
|
|
|
Vorteile von relativen URLs:
|
|
\begin{itemize}[noitemsep]
|
|
\item (meist) kürzer
|
|
\item \enquote{Umzugsfähigkeit} der Web-Präsenz\ldots
|
|
\begin{itemize}[noitemsep]
|
|
\item \ldots auf einen anderen Server (Host-relativ)
|
|
\item \ldots in ein anderes Verzeichnis (Pfad-relativ)
|
|
\end{itemize}
|
|
\end{itemize}
|
|
|
|
Anwendung von vollständigen (Host-absoluten) URLs
|
|
\begin{itemize}[noitemsep]
|
|
\item Verweis auf eine andere Web-Präsenz
|
|
\item Verweis auf den eigenen Server mit anderem Protokoll (HTTP $\Leftrightarrow$ HTTPS $\Leftrightarrow$ FTP)
|
|
\end{itemize}
|
|
|
|
\newpage
|
|
Spezielle Verzeichnisnamen, welche speziell bei relativen \acsp{URL} wichtig sind:
|
|
|
|
\begin{description}[noitemsep]
|
|
\item[\pfad{..}] das übergeordnete Verzeichnis (im Falle des Wurzelverzeichnisses wiederum das Wurzelverzeichnis).
|
|
\item[\pfad{.}] das aktuelle Verzeichnis
|
|
\end{description}
|
|
|
|
|
|
\textbf{Beispiel}: URL des Dokuments \pfad{http://a.b/c/d/e/f.bla}
|
|
|
|
\begin{tabular}{lll}
|
|
URL in \html{<a href="...">} & ergibt & \\
|
|
\pfad{//a.b/z/x} & $\Rightarrow$ \pfad{http://a.b/z/x} & \\
|
|
\pfad{/} & $\Rightarrow$ \pfad{http://a.b/} & Einstiegsseite des Servers \\
|
|
\pfad{./} & $\Rightarrow$ \pfad{http://a.b/c/d/e/} & Default-Dokument im aktuellen Verzeichnis \\
|
|
\pfad{../.././../bla/fasel/././../da} & $\Rightarrow$ \pfad{http://a.b/bla/da} &
|
|
\end{tabular}
|
|
|
|
|
|
\subsection{Anker}
|
|
|
|
\html{<a>} für Textanker im Dokument (auf die mit \pfad{\#ankername} gesprungen werden kann).
|
|
|
|
\html{<a name="ankername">Hierhin kann ich springen</a>} (ursprüngliche Variante) bzw.
|
|
|
|
\html{<a id="ankername">Hierhin auch</a>} (neuere/spätere Variante)
|
|
|
|
\begin{Hinweis}
|
|
\code{id} ist ein \enquote{Universalattribut} und kann mit (fast) jedem Tag verwendet werden.
|
|
Der Tag wird dann über \pfad{\#ankername} ebenfalls direkt anspringbar!
|
|
|
|
$\Rightarrow$ Das \html{<a>}-Tag ist für Verwendung als Textanker heute nicht mehr notwendig! Es reicht die ID \zB eines \html{<h1>}-Tags.
|
|
\end{Hinweis}
|