我讨厌提出这样一个小问题的问题,考虑到它的记录,但我想知道是否有人可以帮我理解HTTP背后的术语。我知道我可以阅读这些文件,但有时感觉有点厚,而且很难理解他们想说的是什么。
这是我到目前为止所得到的:
整个交易由消息组成,消息是请求或响应。
开始行?
[method/verb] [url?] [version?]
GET / HTTP/1.1\r\n
邮件标题
[name]: [value (which is LWS and content)]
Host: google.com\r\n
\r\n
-
[version?] [status code] [description?]
HTTP/1.1 200 OK\r\n
Content-type: text/plain\r\n
Transfer-Encoding: chunked\r\n
\r\n
消息正文?
d\r\n
Hello, world!\r\n
0\r\n
\r\n
(并且,实体主体只是“Hello world!”/消息体的版本没有编码?或者,它是否只是一个'消息体'而不是实体体,如果它被编码?)
我感谢您的任何记录/见解/更正。我目前正在尝试编写HTTP引擎,因此我认为确保使用正确的术语是值得的。谢谢你的阅读。
答案 0 :(得分:2)
所有这些术语都可以在IETF的RFC文档中找到。具体来说,您对RFC 2616感兴趣。如果您正在编写自己的HTTP引擎,则必须至少阅读RFC 2616以及RFC 1738,1808和2396。
以下是一些回答您问题的相关摘录:
Request = Request-Line ; Section 5.1
*(( general-header ; Section 4.5
| request-header ; Section 5.3
| entity-header ) CRLF) ; Section 7.1
CRLF
[ message-body ] ; Section 4.3
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
Response = Status-Line ; Section 6.1
*(( general-header ; Section 4.5
| response-header ; Section 6.2
| entity-header ) CRLF) ; Section 7.1
CRLF
[ message-body ] ; Section 7.2
Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF