你所应该了解的HTTP协议(二)

时间:2021-09-28 16:22:02

上一篇里面我们介绍了HTTP请求,下面我们来介绍下HTTP响应

HTTP响应代表服务器向客户端会送的数据,它包括一个状态行,若干的响应头以及实体内容。在一个HTTP响应中web服务器通过响应头向客户端描述客户端请求的成功与否以及他所发送的数据的类型等信息,客户端通过这些信息知道如何处理返回的数据。一个HTTP响应有以下几个部分组成:

HTTP/1.1      200   OK  状态行:用于描述服务器对客户端请求的处理结果
Sever:Microsoft-IIS/5.0     若干响应头
Date:THU,13,JUL  2017 18:23:53 GMT
Content-Length:80
Content-Type:text/html
Cache-Control:private
                                        一行空行
.......                                  实体内容


HTTP响应的状态行:格式    HTTP版本号  状态码  原因描述(<CRLE>)

状态码表示服务器对请求的处理结果,他是一个三位的十进制数,状态码主要有5类:

100~199:表示成功接受请求,要求客户端继续提交一次请求才能完成整个处理过程,基本上不太用

200~299:表示成功的接收数据并且已经完成整个请求,常用的有200

300~399:为了完成请求客户端需要进一步的细化请求,例如请求的资源已经被移动到另外
的地址。常用的有302(表示请求重定向)。304或者307(表示使用浏览器的缓存的数据)

400~499:客户端的请求有错误,常用的有404

500: 服务器出现错误,常用的有500

对于其他的状态码需要的可以查看HTTP协议的相关内容。

HTTP响应头:用于描述服务器的基本信息以及数据的描述可以通知客户端如何处理之后传回来的数据。HTTP的常用的响应头:

Location:http://www.hhuc.com               配合302实现请求重定向
Server:Appache Tomcat                      服务器的基本信息
Content-Encoding:gzip                      服务器发送时使用的数据压缩格式
Content-Length:80                          传回来的数据的大小
Content-Type:text/HTML,charset:GB2312    传回来的数据格式,如果是text/html格式使用的编码集
Content-Language:zh-cn                     发送数据的语言环境
Last-Modified:TUE,13,JUL 2017 18:23:58 GMT  缓存相关的头
Refresh:1 ,URL:http://www.hhuc.com        通知浏览器定时刷新页面,此值可以是一个数字,指定多长时间后刷新页面,这个数字后面可以跟上一个URL地址,表示隔多长时间后刷新到哪一个页面
Content-Disposition:attachment:filename=aa.zip     与下载相关的头
Transfer-Encoding:chunked                            传输类型,如果此值是chunked,表示当前的数据是一块一块的传输的
Set-Cookie:                                          与cookie相关的头
ETag:w/83749-1290-19203                              和缓存机制相关的头
Connection:close/Keep-Alive                           是否继续保持连接
Date;......                                           当前的时间
Expires:-1                                            指定缓存的时间,如果此值是0或-1则表示不缓存资源
Cache-Control:no-cache                                缓存相关的头,如果为no-cache表示通知浏览器不缓存数据
Pragma:no-cache                                       缓存相关的头,如果为no-cache则表示不缓存数据
后面三个头表示浏览器的缓存机制,由于各种原因,不同浏览器的表示方式不同,所以在开发的时候通常三个头一起使用,以确保缓存的正确性。

以上介绍的HTTP协议的内容只是一部分,如果有其他的需要可以到HTTP协议的文档查看