Mehrere params in HTTP-GET-Anfrage
-
03-07-2019 - |
Frage
Sind URLs der Form http://asdf.com/something.do ? param1 = true? param2 = false gültig?
Das glaube ich nicht die zweite? ist in gültig Urls erlaubt und dass es stattdessen ein Zeichen (&), aber ich bin nicht in der Lage zu finden, etwas darüber in der http 1.1 rfc sein sollte. Irgendwelche Ideen?
Lösung
Es ist nicht gültig zu benutzen? nochmal. ? sollte den Beginn der Parameterliste anzuzeigen. & Sollten Parameter trennen.
RFC 3986 :
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
RFC 1738 :
Eine HTTP-URL hat die Form:
http:// <host> : <port> / <path> ? <searchpart>
Dabei gilt
<host>
und<port>
werden, wie in Abschnitt 3.1 beschrieben. wenn:<port>
weggelassen wird, ist es, die standardmäßig auf Port 80. Kein Benutzername oder Passwort erlaubt.<path>
ist ein HTTP-Selektor und<searchpart>
ist eine Abfrage String. Die<path>
ist optional, da der<searchpart>
ist und sein vorhergehenden "?". Wenn weder<path>
noch<searchpart>
vorhanden ist, die „/“ kann auch weggelassen werden.Innerhalb der
<path>
und<searchpart>
Komponenten, "/", ";" "?", sind reserviert. Das Zeichen „/“ kann innerhalb HTTP verwendet werden, eine zu bezeichnen, hierarchische Struktur.
Andere Tipps
Nutzung & für das zweite und dritte
application / x-www-form-urlencoded
Dies ist der Standard-Inhaltstyp. Formulare mit diesem Inhaltstyp eingereicht werden, müssen wie folgt codiert werden:
- Steuer Namen und Werte sind entkommen. Leerzeichen werden durch
+
ersetzt und dann reservierte Zeichen entgangen sind, wie in [RFC1738], Abschnitt 2.2: Nicht-alphanumerische Zeichen durch%HH
ersetzt werden, ein Prozentzeichen und zwei hexadezimale Ziffern, die den ASCII-Code des Zeichens. Zeilenumbrüche werden als "CR LF" -Paare dargestellt (d.h.%0D%0A
).- Die Steuer Namen / Werte werden in der Reihenfolge, wie sie im Dokument erscheinen aufgeführt. Der Name stammt von dem Wert getrennt durch
=
und Namen / Wert-Paare voneinander durch&
getrennt sind.
Wie bereits erwähnt, ist es nicht gültig, es wieder zu verwenden. Wenn Sie jedoch haben die? Zeichen als Teil eines Parameterwerts, können Sie es als% 63 (genau wie das Leerzeichen, die als% 20 codiert werden) kodieren.