Ist eine URL wie http://example.com/foo?bar
gültig?
Ich suche nach einem Link zu etwas Offiziellem, das so oder so sagt. Eine einfache Ja / Nein-Antwort oder anekdotische Beweise werden es nicht ändern.
url
query-parameters
Conley Owens
quelle
quelle
Antworten:
Der URI-RFC schreibt kein Format für die Abfragezeichenfolge vor. Obwohl erkannt wird, dass die Abfragezeichenfolge häufig Name-Wert-Paare enthält, ist dies nicht erforderlich (z. B. enthält sie häufig einen anderen URI).
HTML legt fest, dass ein über HTTP GET übermitteltes Formular die Formularwerte als Name-Wert-Paare im Formular "? Key1 = value1 & key2 = value2 ..." (ordnungsgemäß codiert) codieren soll. Das Parsen der Abfragezeichenfolge hängt vom serverseitigen Code ab (z. B. Java-Servlet-Engine).
Sie identifizieren nicht, welches serverseitige Framework Sie gegebenenfalls verwenden, aber es ist möglich, dass Ihr serverseitiges Framework davon ausgeht, dass die Abfragezeichenfolge immer in Name-Wert-Paaren vorliegt und eine Abfragezeichenfolge erstickt, die dies nicht ist in diesem Format (zB
?bar
). Wenn es sich um Ihren eigenen benutzerdefinierten Code handelt, der die Abfragezeichenfolge analysiert, müssen Sie lediglich sicherstellen, dass Sie dieses Abfragezeichenfolgenformat verarbeiten. Wenn es sich um ein Framework handelt, müssen Sie Ihre Dokumentation konsultieren oder einfach testen, um zu sehen, wie damit umgegangen wird.quelle
isindex
Magiename
von HTML5 ermöglicht das Senden einer AbfragezeichenfolgeSie sind vollkommen gültig. Sie könnten sie als das Äquivalent des großen muskulösen Mannes betrachten, der still hinter dem Mob-Boten steht. Der Typ hat keinen Namen und spricht nicht, aber seine bloße Anwesenheit vermittelt Informationen.
quelle
"Das" http "-Schema wird verwendet, um Netzwerkressourcen über das HTTP-Protokoll zu lokalisieren. In diesem Abschnitt werden die schemaspezifische Syntax und Semantik für http-URLs definiert." http://www.w3.org/Protocols/rfc2616/rfc2616.html
Also ja, nach einem Fragezeichen ist alles gültig. Ihr Server interpretiert möglicherweise anders, aber anekdotisch können Sie sehen, dass einige Sprachen dies als einen booleschen Wert behandeln, der wahr ist, wenn er aufgelistet ist.
quelle
Ja, es ist gültig.
Wenn man einfach nur überprüfen möchte, ob der Parameter vorhanden ist oder nicht, ist dies eine Möglichkeit, dies zu tun.
quelle
URI Spec
Der einzig relevante Teil der URI-Spezifikation besteht darin, alles zwischen dem ersten
?
und dem ersten zu wissen, was#
der Definition einer Abfrage durch die Spezifikation entspricht. Es kann beliebige Zeichen wie enthalten[:/.?]
. Dies bedeutet, dass eine Abfragezeichenfolge wie?bar
oder?ten+green+apples
gültig ist.Den RFC 3986 finden Sie hier
HTML Spec
isindex
ist nicht sinnvoll HTML5.Es wird nur zur Verwendung als erstes Element in einem Formular als veraltet bereitgestellt und ohne Namen übermittelt.
Das letzte Mal, dass isindex unterstützt wurde, war HTML3 . Die Verwendung in HTML5 dient dazu, die Abwärtskompatibilität zu vereinfachen.
Unterstützung in Bibliotheken
Die Unterstützung in Bibliotheken für dieses URI-Format ist unterschiedlich. Einige Bibliotheken bieten jedoch Legacy-Unterstützung, um die Verwendung zu vereinfachen
isindex
.Perl URI.pm (besondere Unterstützung)
Einige Bibliotheken wie Perls URI bieten Methoden zum Parsen dieser Art von Strukturen
Node.js
url
(keine besondere Unterstützung)Als weiteres weitaus häufigeres Beispiel wird
node.js
der normale Weg gewählt und das Parsen erleichtertparseQueryString
)Die meisten anderen URI-Parsing-APIs folgen einer ähnlichen Vorgehensweise.
parse_url
folgt als ähnliche Implementierung, gibt jedoch nur die Zeichenfolge für die Abfrage zurück. Das Parsen in ein Objekt vonk=>v
erfordertparse_string()
quelle
Es ist gültig: siehe Wikipedia , RFC 1738 (3.3. HTTP) , RFC 3986 (3. Syntaxkomponenten) .
quelle
isindex
veraltete Magiename
aus HTML5Diese veraltete Funktion ermöglicht es einer Formularübermittlung, eine solche URL zu generieren, was einen weiteren Beweis dafür liefert, dass sie für HTML gültig ist. Z.B:
generiert eine URL vom Typ:
Standard: https://www.w3.org/TR/html5/forms.html#naming-form-controls:-the-name-attribute
isindex
wird jedoch wie unter: https://stackoverflow.com/a/41689431/895245 erwähnt veraltetquelle
Wie alle anderen Antworten beschrieben, ist es perfekt für die Überprüfung gültig, insbesondere für boolesche Dinge
Hier ist eine einfache Funktion, um die Abfragezeichenfolge nach Namen abzurufen:
Wenn Sie nun überprüfen möchten, ob die gesuchte Abfragezeichenfolge vorhanden ist oder nicht, können Sie Folgendes tun:
das
exampleQueryString
wird ,false
wenn die Funktion nicht den Query - String finden kann, wird anders seintrue
.quelle