Http消息是服务器与客户端之间交换数据的方式
有两种类型的消息
- 请求:由客户端发送用来触发服务器上的一个动作
- 响应:来自服务器的应答
Http请求的构成
- 起始行
<method> <request-URL> <version>
eg: POST/HTTP/1.1
- method
客户端希望服务器对资源执行的动作。是一个单独的词,比如GET、HEAD或POST
method | description |
---|---|
GET | 获取资源 |
POST | 传输实体主体 |
PUT | 传输文件 |
HEAD | 获取报文首部 |
DELETE | 删除文件 |
OPTIONS | 询问支持的方法 |
TRACE | 追踪路径 |
CONNECT | 要求用隧道协议连接代理 |
- 请求 URL(request-URL)
命名了所请求资源,或者URL路径组件的完整URL - 版本(version)
-
Headers
HTTP消息头,以明文的字符串格式传送,是以冒号分隔的键/值对,如:Accept-Charset: utf-8,每一个消息头最后以回车符(CR)和换行符(LF)结尾。HTTP消息头结束后,会用一个空白的字段来标识,这样就会出现两个连续的CR-LF。
-
Body
不是所有的请求都有body,例如获取资源的请求,GET, HEAD, DELETE 和OPTIONS,通常它们不需要body。有些请求将数据发送到服务器以便更新数据,常见的情况是POST请求(包含HTML表单数据)
Http响应的构成
- 状态行(status line)
<协议版本> <状态码> <状态文本>
- 协议版本,通常为HTTP/1.1
- 状态码(status code),表明请求成功或失败,常见状态码是200,404,或302
- 状态文本(status text)。一个简短的,纯粹的信息,通过状态码的文本描述,帮助人们理解该HTTP消息。
-
Headers
response headers遵循和任何其他headers相同的结构:不区分大小写的字符串,紧跟着的冒号和一个结构取决于header的类型的值。整个header(包括其值)表现为单行形势形式。 -
body
不是所有的响应都有body,具有状态码(如201和204,)的响应,通常不会有body。