An einem Punkt im Verlauf der Geschichte begannen serverseitige Sprachen, urlencodierte Parameter zu optimieren, um Unterstützung für das Senden von Daten als Arrays und Schlüssel / Wert-Objekte hinzuzufügen:
%Vor%Ich spiele mit einigen Edge Cases im Parsing von verschachtelten Parametern einer Bibliothek herum, zB Erhaltung der Parameterreihenfolge. Gibt es eine Spezifikation, die festlegt, wie ein Server diese Kodierung verarbeiten soll? Wenn nicht, welche Referenzimplementierung führte diese Syntax ein?
Eckige Klammern in URIs
Nach RFC-3986 "Uniform Resource Identifier (URI): Generische Syntax" mit Uncodierte eckige Klammern in URIs sind nicht erlaubt. Daher ist es kein HTTP-Standard.
Ein Host, der durch eine Internet Protocol-Literaladresse identifiziert wird, Version 6 [RFC3513] oder höher, wird dadurch unterschieden, dass das IP-Literal in eckige Klammern ("[" und "]") eingeschlossen wird. Dies ist die einzige Stelle, an der in der URI-Syntax eckige Klammerzeichen zulässig sind.
Viele Programmiersprachen verwenden eckige Klammern für Arrays, daher denke ich, es war ein natürlicher Übertrag, um eckige Klammern in URIs zu verwenden.
Gibt es eine Spezifikation, die festlegt, wie ein Server diese Codierung verarbeiten soll?
Nein, zumindest nicht sprachunabhängig.
Erste Implementierung
Viele Webanwendungs-Frameworks ermöglichen die Wiederverwendung des gleichen Schlüssels in der Abfrage, um ein Array zu erstellen, z. B. http://example.org/?foobar=hello&foobar=world
. Diese Frameworks erlauben auch die Verwendung von eckigen Klammern in Schlüsseln, aber es macht keinen Unterschied, sie sind nur ein Teil des Namens. Assoziative Arrays werden selten unterstützt. (Vorbehalt: Ich bin nicht mit all diesen Sprachen vertraut.)
Bisher ist PHP die einzige Sprache, die ich gefunden habe, die assoziative Arrays in URLs ohne benutzerdefinierten Code unterstützt.
http_build_query
war schon sehr lange in PHP. Wahrscheinlich das. Ссылка
Tags und Links http url-encoding uri