[英]Format of an HTTP get request
我正在写一个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
是协议的一部分,并且在某种程度上是特殊的。 但是,据我所知,情况并非如此,我同样可以做url$first_variable-first_value?second_variable-second_value
等等。
您所指的是URL的查询部分,如URL规范的 第3.4节中所定义,并且由HTTP规范的 第3.2节允许。
但是,在请求的URL中传递参数不是在HTTP请求中发送参数的唯一方法。 另一种选择是在POST
请求中使用application/x-www-form-urlencoded
或multipart/form-data
Content Type,如HTML 4.01规范的第17.13.4 节和HTML5规范的4.10.22节所定义,例如:
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--
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.