私はHTTPサーバーを書いています(自分自身を教育することだけを目的としています)。
典型的なGETリクエストは次のようです。
GET /?a=1&b=2 HTTP/1.1
Host: localhost
User-Agent: my browser details
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
送信されている変数を確認できるのは最初の行だけです。変数とその内容を取得するための正規表現を作成するのは簡単ですが、もっと簡単な方法があるかどうか疑問に思っています。 url?first_variable=first_value&second_variable=second_value
のアイデアはプロトコルの一部であり、何らかの形で特別であると常に思っていたので、私は尋ねます。しかし、私が見る限り、これは当てはまらず、url$first_variable-first_value?second_variable-second_value
などを実行することもできます。
あなたが参照しているのは、 RL仕様 の セクション3.4 で定義され、 セクション3.2 で許可されているURLのクエリ部分です。 HTTP仕様 。
ただし、要求されたURLでパラメーターを渡すことは、HTTP要求でパラメーターを送信する唯一の方法ではありません。もう1つのオプションは、HTML4.01仕様の セクション17.13.4 で定義されているように、POST
リクエストでapplication/x-www-form-urlencoded
またはmultipart/form-data
コンテンツタイプを使用することです。 セクション4.10.22 HTML5仕様の例:
POST / HTTP/1.1
Host: localhost
User-Agent: my browser details
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 7
a=1&b=2
POST / HTTP/1.1
Host: localhost
User-Agent: my browser details
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Type: multipart/form-data; boundary=myboundary
--myboundary
Content-Disposition: form-data; name="a"
1
--myboundary
Content-Disposition: form-data; name="b"
2
--myboundary--