目录
[1. HTTP 响应(Response)](#1. HTTP 响应(Response))
[1.1 响应报文结构](#1.1 响应报文结构)
[1.2 详解"状态码"](#1.2 详解“状态码”)
[1.3 响应"报头"(header)](#1.3 响应“报头”(header))
[1.3.1 Content-Type](#1.3.1 Content-Type)
[1.3.2 Content-Length](#1.3.2 Content-Length)
[2. 总结](#2. 总结)
回顾:上篇讲解了HTTP协议格式,以及HTTP请求报文内容解析。
1. HTTP 响应(Response)
1.1 响应报文结构
- 首行
- 响应头
- 空行
- body(正文)

响应报文与请求报文最大的差别在首行,其余结构没变化。
响应首行内容包含:协议版本号 、状态码 和**状态码描述。**例:

1.2 详解"状态码"
200是最常见的状态码,表示请求成功。每个状态码代表的意义都不同。
状态码范围 100~599 :

301 "Moved Permanently"
3xx都表示重定向。
重定向: 程序员修改某资源的URL,用户不知道资源路径已改变,在用旧URL访问资源时会跳转到新URL(新网页);这样把新URL绑定到旧URL上,用旧URL访问跳转就叫重定向。
如 301 状态码描述为"Moved Permanently" 译为:永久移动。例:https://baidu.com/ 访问资源时使用抓包工具抓取数据包就能看见:
403 "Forbidden"
4xx都表示客户端错误,不是服务端代码逻辑问题。比如你访问一个未公开的网址或不存在的网址那么这肯定是用户的问题。
403 "Forbidden" 表示权限不够,访问不了。比如访问我的私有代码:SpringBoot常用配置 - 代码片段 - Gitee.com
404 "Not Found"
404 "Not Found" 译为:没有发现。表示用户访问的网址错误,没有该网址对应的资源。
405 "Method Not Allowed"
译为:方法无效。表示 服务端不接受采用某种方法发送而来的请求(get、post、put等)。
500 "Internal Server Error"
5xx都表示服务端错误,如服务器内部错误,如请求处理时间超时。
500 "Internal Server Error" 译为:内部服务器错误。表示服务器内部错误,如服务器崩溃了,会产生这个状态码。
504 "Gateway Timeout"
504 "Gateway Timeout" 译为:网关超时。表示网关服务器等待了长时间未接收到上有服务器的响应结果,而返回的状态码。
服务器集群:
1.3 响应"报头"(header)
请求和响应结构内容最大差异在首行,其他都差不多;下面随便列举两个。
1.3.1 Content-Type
响应中常见的Content-Type:
- text/html :body 数据格式是HTML
- text/css :body 数据格式是CSS
- application/javascript :body 数据格式是JavaScript
- application/json :body 数据格式是JSON
1.3.2 Content-Length
表示body长度,单位字节。如Content-Length:1234 ,表示body长度为1234byte。
2. 总结
|------------------|-----------------------|
| 请求 | 响应 |
| 首行(方法+URL+协议版本号) | 首行(版本号+状态码+状态码描述) |
| 报头(header) | 报头(header) |
| 空行 | 空行 |
| 正文(body)(不一定有) | 正文(body) (传输二进制等格式数据) |
他们结构类似相同,报文实际意义容易理解,更多要注意的是结构中各 "键值对" 代表了什么意思,有什么作用。

