深入Nginx之《HTTP请求报文与HTTP响应报文》
HTTP请求报文
这个很有必要了解,好歹我们得知道Nginx在提供HTTP服务时,客户端都会传些什么。HTTP请求中客户端传送的内容称为HTTP请求报文。
1、请求行包含:
请求方法,请求URL,HTTP协议及版本。其中请求方法和支持的协议版本包含如下:
GET,HEAD,POST 它们都支持HTTP1.0/1.1。
PUT,DELETE,CONNECT,OPTIONS,TRACE,PATCH 它们只支持HTTP1.1。
2、请求头部:
客户端向服务器传递请求时附加的一些信息,由key/value组成,key和value由冒号分隔,每行一对,请求头常见的key 有 Cookie,User_Agent, Accept-Encoding。
3、请求体:
一般是由POST方法提交,它可能是图片,文件,或者是字符串。
1.2 HTTP响应报文
这个仍然很有必要了解的,客户端得到了想要东东(有时候可能也得不到,如服务异常了),那里面包含了些什么。HTTP请求后返回给客户端的内容称为HTTP响应报文。
HTTP响应报文(服务器返回给客户端的内容)由三部分组成,它们分别是响应行,响应头,响应体。
响应行包含HTTP协议版本,状态码,状态码描述。
其中状态码的分类如下:
状态码 |
作用 |
1XX |
它表示请求已经被接受,正在继续处理,这种响应是临时响应,不会返回响应体。 |
2XX |
成功处理并返回,它表示在服务器内已经被接收,被知晓,并处理完成。 |
3XX |
重定向功能,告知客户端需要继续执行操作才可以完成请求。 |
4XX |
出现问题,和客户端有关系,比如401表示权限问题,404表示访问了一个不存在的URL。 |
5XX |
出现问题,和服务端有关,比如500表示内部错误,504表示请求超时。 |
响应头,为响应报文附加额外的信息,和请求头相似。区别在于它是返回给客户端,请求头部是从客户端发起。常见的响应头key如Content-Type,Content-Encoding。
响应体,请求返回到客户端的正文数据。
下面是一个完整的响应报文示例:
响应报文并非只有Nginx的后端服务器才能发送的,有些时候Nginx也可以作为服务器对请求报文的内容进行响应,比如return,echo等指令。