http getリクエストの複数のパラメーター
-
03-07-2019 - |
質問
http://asdf.com/something.doという形式のURL ?param1 = true?param2 = false 有効?
2番目とは思わない?有効なURLで許可されており、代わりにアンパサンド(<!> amp;)にする必要がありますが、http 1.1 rfcでこれについて何も見つけることができません。アイデアはありますか?
解決
使用するのは無効ですか?再び。 ?パラメータリストの開始を示す必要があります。 <!> amp;パラメーターを分離する必要があります。
RFC 3986 から:
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
RFC 1738 から:
HTTP URLの形式は次のとおりです。
http:// <host> : <port> / <path> ? <searchpart>
where
<host>
および<port>
は、セクション3.1で説明されているとおりです。:<port>
の場合 省略され、ポートのデフォルトは80です。ユーザー名またはパスワードはありません。 許可された。<path>
はHTTPセレクターで、<searchpart>
はクエリです 文字列。 <=>はオプションです。<=>およびその 先行する<!> quot;?<!> quot;。 <=>も<=>も存在しない場合、<!> quot; / <!> quot; 省略することもできます。<=>および<=>コンポーネント内、<!> quot; / <!> quot;、<!> quot ;; <!> quot;、<!> quot;?<!> quot;は 予約済み。 <!> quot; / <!> quot;文字をHTTP内で使用して、 階層構造。
他のヒント
use <!> amp; 2番目と3番目の
i.e。 http://asdf.com/something.do?param1=true < !> amp; param2 = false
application / x-www-form-urlencoded
これはデフォルトのコンテンツタイプです。このコンテンツタイプで送信されるフォームは、次のようにエンコードする必要があります。
- コントロールの名前と値はエスケープされます。スペース文字は
+
に置き換えられ、次に予約文字は[RFC1738]セクション2.2で説明されているようにエスケープされます:英数字以外の文字は、文字のASCIIコードを表す%HH
、パーセント記号、2桁の16進数に置き換えられます。改行は<!> quot; CR LF <!> quot;として表されます。ペア(つまり、%0D%0A
)。- コントロールの名前/値は、ドキュメントに表示される順序でリストされています。名前は値と
=
で区切られ、名前と値のペアは互いに&
で区切られます。<!>#8212; application / x-www-form- urlencoded
前述のように、再度使用することは無効です。ただし、?パラメータ値の一部としての文字は、%63としてエンコードできます(%20としてエンコードされるスペース文字のように)。