HTTP协议响应(详解)

HTTP协议详解之响应

什么是HTTP响应

当服务器收到浏览器的请求后,会发送响应消息给浏览器。一个完整的响应消息主要包括响应首行、响应头信息、空行和响应正文。

HTTP响应消息分析

HTTP/1.1 200 OK

Server: Apache-Coyote/1.1

Content-Type: text/html;charset=UTF-8

Content-Length: 624

Date: Mon, 03 Nov 2014 06:37:28 GMT

 

响应体内容

(1)响应首行:其内容是”HTTP/1.1  200  OK”

l  HTTP/1.1 :表示协议版本

l  200 :表示响应状态码,200表示响应成功。

l  OK :表示响应成功,对响应状态码的解释。

(2)响应头信息:类似于请求消息中的请求头,其格式和请求头信息格式一样,即响应头:响应头值。

l  Server响应头:该响应头是服务器告诉浏览器,当前响应的服务类型和版本。

l  Content-Type响应头:服务器告诉浏览器响应内容是什么类型,以及采用的是什么字符编码。该响应头的值现在为:text/html;charset=utf-8。说明响应信息的类型是文本类型中的html,使用的字符编码是utf-8。

l  Content-Length响应头:服务器告诉浏览器,响应内容的长度,该响应内容的长度现在是624个字节。

l  Date响应头:表示是服务器是在什么时候响应回浏览器,注意这里的时间是按照美国时间来计算。

(3)空行:响应头和响应体由空行连接。

(4)响应体:该响应消息的响应体是一个html文档。浏览器可以直接识别这个html文件。而我们访问的是一个jsp文件,响应回去的是一个html文件。说明服务器将该jsp翻译成了一个html,然后再响应给浏览器。


响应状态码

在http响应协议中,我们通过HttpWatch抓包抓取到响应信息。其中响应首行中就包含一个状态码。状态码由三位数字组成,表示请求是否被理解或者被满足。HTTP响应状态码的第一个数字定义了响应的类别,后面两位没有具体分类,第一个数字有五种可能的取值,具体介绍如下所示:

l  1xx :表示请求已接收,需要继续处理。

l  2xx :表示请求已经成功被服务器接收、理解、并接受

l  3xx :为完成请求,客户端需要进一步细化请求

l  4xx :客户端的请求有错误

l  5xx :服务器端出现错误

通过上面的介绍,现在我们来学习几个具体、常用的状态码,如下所示:

状态码

说明

200

请求成功,浏览器会把响应回来的信息显示在浏览器端。

404

表示客户端出错,比如说在浏览器端请求一个不存在的资源,这时浏览器端会出现404状态码。

405

客户端错误的一种,表示当前的请求方式不支持。比如说服务器端只对GET请求做了处理,而客户端的请求是post方式的,这个时候会出现405状态码。

500

服务器端错误,比如说服务器端代码出现空指针等异常,浏览器就会收到服务器发送的500状态码。

302

表示重定向。比如说浏览器访问一个资源,服务器响应给浏览器一个302的状态码,并且通过响应头Location发送了一个新的url,告诉浏览器去请求这个url。这就是重定向。

304

第一访问一个资源后,浏览器会将该资源缓存到本地,第二次再访问该资源时,如果该资源没有发生改变,那么服务器响应给浏览器304状态码,告诉浏览器使用本地缓存的资源。

在304详解时,会提到了两个头:

l Last-Modified:这个是响应头,是浏览器第一次请求一个资源时,服务器发送给浏览器的,值为请求内容最后的修改时间。

If-Modified-Since:这个是请求头,浏览器第二次请求一个资源时,浏览器发送给服务器的,把第一次服务器发送给它的时间归还给服务器。
展开阅读全文

没有更多推荐了,返回首页