如果说HTTP是因特网的信使,那么HTTP报文就是它用来搬东西的包裹了。
- 报文是如何流动的;
- HTTP报文的三个组成部分(起始行、首部和实体的主体部分);
- 请求和响应报文之间的区别;
- 请求报文支持的各种功能(方法);
- 和响应报文一起返回的各种状态码;
- 各种各样的HTTP首部都是用来做什么的。
报文向下游流动
报文的组成
对报文进行描述的起始行(start line)、包含属性的首部(header)块,以及可选的、包含数据的主体(body)部分。
每行都以一个由两个字符组成的行终止序列作为结束,其中包括一个回车符(ASCII码13)和一个换行符(ASCII码10)。这个行终止序列可以写作CRLF。
报文的语法
所有的HTTP报文都可以分为两类:请求报文(request message)和响应报文(response message)。
格式:
//请求
<method> <request-URL> <version>
<headers>
<entity-body>
//响应
<version> <status> <reason-phrase>
<headers>
<entity-body>
描述:
- 方法 (method)
- 请求URL (request-URL)
- 版本 (version)
- 状态码 (status-code)
- 原因短语 (reason-phrase)
- 首部 (header)
- 实体的主体部分 (entity-body)
起始行:请求行和响应行
方法:请求的起始行以方法作为开始。
状态码:用来告诉客户端每条请求的响应结果。使用三位数字表示。
常见的状态码:
200 OK 成功。请求的数据都在响应主体中。
401 Unauthorized (未授权) 需要输入用户名和密码。
404 Not Found (未找到) 服务器无法找到所请求URL对应的资源
原因短语:对状态码提供了文本形式的解释。
版本号:HTTP版本号
首部:向请求和响应报文中添加了一些附加信息。
常用的首部
相关模块详细描述
安全方法:HTTP定义了一组被称为安全方法的方法。GET方法和HEAD方法都是被认为是安全的。
状态码:
200-299 --- 成功状态码
300-399 --- 重定向状态码
重定向状态码,要么告知客户端使用替代位置来访问他们所感兴趣的资源,要么就提供一个替代的响应而不是资源的内容。如果资源已经被移动,可发送一个重定向状态吗和一个可选的Location首部来告知客户端资源已被移走(HTTP跳转HTTPS实现方法,状态码301)。
400-499 --- 错误状态码