报文的组成
报文有三部分组成: 对报文描述的起始行, 包含属性的首部和包含数据的主体.
客户端请求报文
服务器响应报文
每行以 ASCII 终止, ASCII 包括回车符和换行符, 简称 CRLF. 稳健的应用程序也接受耽搁换行符作为行终止.
首部和主体之间必须要有回车 + 换行.
报文语法
请求报文格式:
- <method > 空格 < request-URL> 空格 < version > 空格 + 回车
- <headers>
空格 + 回车
<entity-body>
响应报文格式:
- <version > 空格 < status > 空格 < reason-phrase>
- <headers>
空格 + 回车
<entity-body>
方法 (method)
客户端希望服务器对资源执行的动作. 比如 GET,POST,PUT 等. GET 和 HEAD 是安全的方法, 他们的请求在服务器上不会产生什么结果, 也不是说什么动作都不知晓, 有时候允许 HTTP 应用程序开发者通知用户, 例如点击付款, 浏览器可能会弹出警告.
请求 URL(request-URL)
请求资源的路径.
版本 (version)
报文所使用的 HTTP 版本. HTTP/1.22 的版本比 HTTP/1.3 的版本高.
状态码 (status-code)
三位数字描述了请求过程中所发生的情况.
原因短语 (reason-phrase)
状态码的可读版本.
首部 (header)
可以有 0 个或多个首部. 每个首部的格式名字 +:+ 可选空格 (可有可无)+ 值.
Host:www.jose-hardware.com
, 请求头中的 Host 表示接受请求的服务器的域名 (包括主机名和端口号).HTTP/1.1 要求首部不能空. 首部延续行, 必须至少一个空格或 tab. 例如:
- Server: Test Server
- Version 1.0
实体的主体部分 (entity-body)
任意数据组成的数据库. 并不是所有的报文都有实体的主体部分.
来源: http://www.jianshu.com/p/db56f50c7a71