Ein Query-String ist ein Teil eines Uniform Resource Locators (URL), der bestimmten Parametern Werte zuweist. Ein Query-String enthält häufig Felder, die von einem Webbrowser oder einer anderen Client-Anwendung zu einer Basis-URL hinzugefügt werden, beispielsweise als Teil von HTML, wobei das Aussehen einer Seite gewählt oder zu Positionen in Multimedia-Inhalten gesprungen wird.
Ein Webserver kann eine Hypertext Transfer Protocol (HTTP)-Anfrage entweder durch Lesen einer Datei aus seinem Dateisystem basierend auf dem URL-Pfad oder durch Bearbeiten der Anfrage mithilfe einer Logik verarbeiten, die spezifisch für den Ressourcentyp ist. In Fällen, in denen eine spezielle Logik aufgerufen wird, steht der Query-String dieser Logik zur Verwendung bei ihrer Verarbeitung zusammen mit der Pfadkomponente der URL zur Verfügung.
Struktur
Eine typische URL, die einen Query-String enthält, sieht wie folgt aus:
https://example.com/over/there?name=ferret
Wenn ein Server eine Anfrage für eine solche Seite empfängt, kann er ein Programm ausführen und den Query-String, der in diesem Fall “name=ferret” ist, unverändert an das Programm weitergeben. Das Fragezeichen wird als Trennzeichen verwendet und ist nicht Teil des Query-Strings.
Web-Frameworks können Methoden zum Parsen mehrerer Parameter im Query-String bereitstellen, die durch ein bestimmtes Trennzeichen getrennt sind. In der folgenden Beispiel-URL werden mehrere Abfrageparameter durch das kaufmännische Und-Zeichen “&” getrennt:
https://example.com/path/to/page?name=ferret&color=purple
Die genaue Struktur des Query-Strings ist nicht standardisiert. Methoden, die zum Parsen des Query-Strings verwendet werden, können sich zwischen Websites unterscheiden.
Ein Link auf einer Webseite kann eine URL enthalten, die einen Query-String enthält. HTML definiert drei Möglichkeiten, wie ein User Agent den Query-String generieren kann:
- ein HTML-Formular über das
<form>...</form>-Element - eine serverseitige Image Map über das
ismap-Attribut auf dem<img>-Element mit einer<img ismap>-Konstruktion - eine indizierte Suche über das inzwischen veraltete
<isindex>-Element
URL-Kodierung
Einige Zeichen können nicht Teil einer URL sein (z. B. das Leerzeichen), und einige andere Zeichen haben eine besondere Bedeutung in einer URL: Beispielsweise kann das Zeichen “#” verwendet werden, um einen Unterabschnitt (oder ein Fragment) eines Dokuments genauer zu spezifizieren. In HTML-Formularen wird das Zeichen “=” verwendet, um einen Namen von einem Wert zu trennen. Die URI-Generalsyntax verwendet die URL-Kodierung, um dieses Problem zu beheben, während HTML-Formulare einige zusätzliche Ersetzungen vornehmen, anstatt die Prozentkodierung für alle diese Zeichen anzuwenden. SPACE wird als ‘+’ oder ‘%20″ kodiert.
HTML 5 spezifiziert die folgende Transformation zum Senden von HTML-Formularen mit der “GET”-Methode an einen Webserver. Das Folgende ist eine kurze Zusammenfassung des Algorithmus:
- Zeichen, die nicht in den korrekten Zeichensatz konvertiert werden können, werden durch numerische HTML-Zeichenreferenzen ersetzt
- SPACE wird als ‘+’ oder ‘%20’ kodiert
- Buchstaben (A–Z und a–z), Zahlen (0–9) und die Zeichen ‘~’, ‘-‘, ‘.’ und ‘_’ werden unverändert gelassen
- ‘+’ wird mit %2B kodiert
- Alle anderen Zeichen werden als ‘%HH’ hexadezimale Darstellung kodiert, wobei alle Nicht-ASCII-Zeichen zuerst als UTF-8 kodiert werden (oder eine andere angegebene Kodierung)
Das Oktett, das der Tilde (“~”) entspricht, ist in Query-Strings gemäß RFC3986 zulässig, muss aber in HTML-Formularen als “%7E” prozentual kodiert werden.
Die Kodierung von SPACE als ‘+’ und die Auswahl von “as-is”-Zeichen unterscheidet diese Kodierung von RFC 3986.
Beispiel
Wenn ein Formular wie folgt in eine HTML-Seite eingebettet ist:
<form Aktion="/cgi-bin/test.cgi" method="get">
<input type="text" name="first" />
<input type="text" name="second" />
<input type="submit" />
</form>
und der Benutzer die Zeichenketten „this is a field“ und „was it clear (already)?“ in die beiden Textfelder eingibt und die Schaltfläche „Senden“ drückt, empfängt das Programm „test.cgi“ (das Programm, das durch das Attribut „action“ des Elements „form“ im obigen Beispiel spezifiziert wird) den folgenden Query-String: first=this+is+a+field&second=was+it+clear+%28already%29%3F.
Wenn das Formular auf dem Server durch ein CGI-Skript verarbeitet wird, kann das Skript den Query-String typischerweise als Umgebungsvariable namens “QUERY_STRING” empfangen.
Quelle: Query string, https://en.wikipedia.org/wiki/Query_string [Abgerufen am 18. November 2021]











