Response代表服务端响应部分,示例中Response部分代码如下
< HTTP/1.1 301 Moved Permanently # 状态行 # [协议版本] [状态码] [状态信息]< Server: nginx/1.18.0 # 响应报头< Date: Fri, 30 Jul 2021 01:26:20 GMT # 响应报头< Content-Type: text/html # 实体报头< Content-Length: 169 # 实体报头< Connection: keep-alive # 实体报头< Location: https://www.hagan.zone/ # 响应报头<<html><head><title>301 Moved Permanently</title></head><body><center><h1>301 Moved Permanently</h1></center><hr><center>nginx/1.18.0</center></body></html>* Connection #0 to host www.hagan.zone left intact* Closing connection 0
Response也包含三个部分,分别为 状态行 消息报头(Header) 响应正文(Body),下面将详细讲解这三部分。
下面的讲解请参考示例中Response部分代码来理解。
1.状态行
状态行包含三个部分,分别为 协议版本 状态码 状态信息
< HTTP/1.1 301 Moved Permanently # 状态行 # [协议版本] [状态码] [状态信息]
1.协议版本
本次响应的协议版本为 HTTP/1.1,常见协议版本如下
- HTTP/1.0
- HTTP/1.1
- HTTP/2.0
2.状态码
本次响应的状态码为 301,常见状态码如下
1xx
指示信息,表示请求已接收,继续处理
2xx
成功,表示请求已被成功接收、理解、接受
200OK,请求成功201Created,对于那些要服务器创建对象的请求来说,资源已创建完毕202Accepted,请求已接受,但服务器尚未处理204No Content,Response包含状态行和消息报头,但不包含响应正文206Partial Content,部分请求成功
3xx
重定向,要完成请求必须进行更进一步的操作
301请求永久重定向至新URL302请求临时重定向至新URL
4xx
客户端错误。请求有语法错误或请求无法实现
400Bad Request,错误的请求401Unauthorized,需要客户端认证403Forbidden,请求被服务器拒绝404Not Found,未找到资源
5xx
服务端错误,服务端未能实现合法的请求
500Internal Server Error,内部服务器错误503Server Unavailable,服务器暂时无法提供服务,一段时间后便可恢复服务
3.状态信息
本次响应的状态信息为 Moved Permanently,常见状态信息如下
- OK
- Moved Permanently
- Not Found
2.消息报头(Header)
Response中的消息报头主要分为 响应报头 和 实体报头
响应报头
本次响应中的响应报头包含如下三个
< Server: nginx/1.18.0 # 响应报头< Date: Fri, 30 Jul 2021 01:26:20 GMT # 响应报头< Location: https://www.hagan.zone/ # 响应报头
常见的响应报头如下
Location
重定向接受者到一个新的位置
WWW- Authenticate
包含在401响应消息中,客户端收到401
Server
包含了服务器用来处理请求的软件信息
Apache- Coyote/1.1
实体报头
实体报头也叫正文报头,本次响应中的实体报头包含如下三个
< Content-Type: text/html # 实体报头< Content-Length: 169 # 实体报头< Connection: keep-alive # 实体报头
常见的实体报头如下
Content-Encoding
编码类型是压缩还是非压缩
eg: Content-Encoding: gzip
Content-Language
资源所用的自然语言,没有设置该域则认为实体内容将提供给所有的语言阅读
Content-Length
正文的长度,以字节方式存储的十进制数字表示
Content-Type
响应正文的媒体类型
- 实体类型列表
Expires
响应过期的日期和时间
3.响应正文(Body)
响应正文有很多种类型,响应正文的类型需要根据消息报头的Content-Type字段来确定,本次响应的编码方式为text/html
< Content-Type: text/html # 实体报头
响应正文如下
<html><head><title>301 Moved Permanently</title></head><body><center><h1>301 Moved Permanently</h1></center><hr><center>nginx/1.18.0</center></body></html>* Connection #0 to host www.hagan.zone left intact* Closing connection 0
curl命令只展示数据,不提供数据的解析,如果是浏览器,则会将响应正文以 text/html 的方式进行解析,此时便得到了一个HTML页面
