HTTP请求响应系列02_响应报文的详解

响应报文

1、响应报文的详解

上篇文字讲的“请求报文”,本篇主要解释响应报文包括的内容。

响应报文的内容也包括三部分,分别是: 响应行, 响应头, 响应体。这三部分放的都是信息。是S端发给B端的信息,道理是一样的。

响应:就是请求后的结果。

栗子(接上篇文字的栗子):

“我今天去火车站接女朋友”,这句话核心表达的意思(经过缩句):我接女朋友。

响应行:会总体说响应的结果。如:接到了还是没有接到

响应头:对结果的描述。如:几点接到了(有可能晚到噢),这次女朋友和上次有没有变化(如:头发是不是烫了,化了新的妆…………………………),

响应体:那就是女朋友本人了,说不定还有惊喜(给了你一个么么哒)

1)、响应行

响应行包括:HTTP协议的版本,响应的状态码和描述。

如: HTTP/1.1 200 OK 表示响应时使用的是http协议的1.1版本;响应的状态码是200;表示OK。

响应状态码

和请求报文相比,响应报文多了一个“响应状态码”,它以“清晰明确”的语言告诉客户端本次请求的处理结果。

HTTP的响应状态码包括:

  • 1xx :告诉浏览器端,服务器已经收到请求了,正在处理,请稍等……。1xx的响应一般不用理会

  • 2xx:告诉浏览器端处理成功,常见的有200

  • 3xx:告诉浏览器端要重定向到其它地方。它让客户端再发起一个请求以完成整个处理。常见的有:303,304。但是304却不是重定向。后面的详情里描述

  • 4xx:告诉浏览器端,你错了,你找到东西不存在。如:客户端的请求一个不存在的资源(地址不对,请求方式不对,Content-type不匹配等等),客户端未被授权,禁止访问等。常见的有:404,400

  • 5xx:告诉浏览器端,我服务器端错了,如:服务端抛出异常,路由出错,HTTP版本不支持等。常见的有500

附:HTTP状态码的描述:

建议大家只看我上面提到的常用的状态码(200,304,400,404,500)就行,不常用的先不用看,因为,很多状态码可能一辈子都用不到。你可以在你“临走”时,回忆一下,这辈子是不是还有很多的状态码还没有用过。

1)、2xx 处理成功

200

200对应的信息是OK,表示请求响应已成功,并且响应的结果没有问题。看到200,你应该开心。恭喜你,没有问题。

201 Created

201表示请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,且其 URI 已经随Location 头信息返回。

202 Accepted

202表示服务器接受了请求,但是还没有处理。但是该请求会不会被执行就不一定了。在异步操作的场合下,没有比发送这个状态码更方便的做法了。

203 Non-Authoritative Information

203表示服务器接收并成功处理了请求,但返回的实体头部信息来自本地或者第三方的拷贝。

204 No Content

204表示服务器成功处理了请求,但不需要返回任何实体内容,并且希望返回更新了的元信息( 元信息是用来描述服务器发送数据的信息,如:发的是什么信息,是否接收完整,过程中是否出错 )。由于204响应里不能包含任何消息体,因此它始终以消息头后的第一个空行结尾。

205 Reset Content

205表示服务器成功处理了请求,但没有返回任何内容。但是与204响应不同,返回此状态码的响应要求请求者重置文档视图(如:表单)。以便用户能够轻松地开始另一次输入。

2)、3xx 重定向到其它地方

这类状态码是用来重定向的,重定向目标在本次响应的 Location 属性中。

300 Multiple Choices

300表示被请求的资源有多个可供选择的回馈信息,每个可供选择的回馈信息都有自己的地址和浏览器驱动的商议信息。

301 Moved Permanently

301表示被请求的资源被永久移动到新位置。

302 Move Temporarily

302表示请求的资源临时从不同的 URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。

303 See Other

303表示请求的响应会在另一个 URL 上被找到,并且浏览器端需要使用 GET 的方式访问另一个 URL 。

304 Not Modified

304表示文档的内容没有改变(带条件的 GET 请求且该请求已被允许)

305 Use Proxy

305表示被请求的地址必须经过代理。Location 域中保存着代理所在的 URI 信息。

307 Temporary Redirect

307表示请求的资源临时从不同的URI 响应请求。

3)、4xx处理发生错误

4开头的状态码代表了客户端请求的资源不存在。

400 Bad Request

1、语义有误,当前请求无法被服务器理解。 2、请求参数有误,或者是content-type不一致导致的错误。

401 Unauthorized

当前请求需要用户验证。该响应必须包含一个适用于被请求资源的 WWW-Authenticate 信息头用以询问用户信息。客户端可以重复提交一个包含恰当的 Authorization 头信息的请求。

403 Forbidden 服务器已经理解请求,但是拒绝执行它。

404 Not Found 404是比较常见的状态码,表示浏览器端请求的资源不存在

405 Method Not Allowed 请求方法不能用于请求资源

406 Not Acceptable 请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体。

407 Proxy Authentication Required 与401响应类似,只不过客户端必须在代理服务器上进行身份验证。代理服务器必须返回一个 Proxy-Authenticate 用以进行身份询问。

408 Request Timeout 请求超时。

409 Conflict 409表示由于和被请求的资源的当前状态之间存在冲突,请求无法完成。

410 Gone 被请求的资源在服务器上已经不再可用,而且没有任何已知的转发地址。这样的状况应当被认为是永久性的。

411 Length Required 411表示 由于没有 Content-Length 头,所以 服务器拒绝接受请求。

4)、5xx 处理发生错误

5开头的状态码表示服务器在处理请求的过程中有错误或者异常状态发生,一般都是后端的问题。

500 Internal Server Error 这是最常见的状态码,由于服务器端代码的健壮性问题导致了它无法完成对请求的处理。

501 Not Implemented 服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。 502 Bad Gateway 网关或者代理工作的服务器,从上游服务器接收到无效的响应。

503 Service Unavailable 由于服务器临时维护或者出现过载的情况,无法处理请求。

504 Gateway Timeout 网关或者代理服务器超时

505 HTTP Version Not Supported HTTP协议的版本,服务器不支持。

2)、响应头

HTTP响应头往往和状态码是结合起来的。

常见的响应头包括:

Allow: 服务器支持哪些请求方法(如GET、POST等)

Content-Encoding: 文档的编码(Encode)方法。只有在解码之后才可以得到Content-Type头指定的内容类型。利用gzip压缩文档能够显著地减少HTML文档的下载时间。

Content-Length:表示内容长度。

Content- Type:表示后面的文档属于什么MIME类型。如:text/html、application/json;

Date:表示响应内容的时间(GMT格式)。

Last-Modified:文档的最后改动时间。客户可以通过If-Modified-Since请求头提供一个日期,该请求将被视为一个条件GET,只有改动时间迟于指定时间的文档才会返回,否则返回一个304(Not Modified)状态。Last-Modified也可使用程序代码进行设置。

Expires:告诉浏览器把响应的资源缓存多长时间,-1或0则是不缓存。

Set-Cookie: 设置和页面关联的Cookie,即:服务端设置客户端的Cookie,其原理就是通过这个响应报文头属性实现的

Cache-Control :缓存控制,如: no-cache;告诉客户端该内容不做缓存。

ETag: 一个代表响应服务端资源(如页面)版本的报文头属性,如果某个服务端资源发生变化了,这个ETag就会相应发生变化。它是Cache-Control的有益补充,可以让客户端“更智能”地处理什么时候要从服务端取资源,什么时候可以直接从缓存中返回响应

Location: 表示客户应当到哪里去提取文档。Location通常不是直接设置的,而是通过重定向进行的,同时会设置状态代码为302。

Refresh 表示浏览器应该在多少时间之后刷新文档,以秒计。这种功能通常是通过设置HTML页面HEAD区的<META HTTP-EQUIV="Refresh" CONTENT="5;URL=">实现。注意Refresh头不属于HTTP 1.1正式规范的一部分,而是一个扩展,但Netscape和IE都支持它。

WWW-Authenticate: 客户应该在Authorization头中提供什么类型的授权信息?

3)、响应体

这个是服务器响应给客户端的数据,如:

[
 {userid: "01001", username: "马梅玲"},
 {userid: "01002", username: "冯一凡"},
 {userid: "01003", username: "姬佩霞"},
 {userid: "01004", username: "李晨兴"}
]

2、在chrome如何查看响应报文

1)、打开google浏览器

2)、在浏览器空白处点右键,选择“检查”,

3)、选择network

4)、在浏览器发送请求,会看到在下方出现了请求(如:books)。

5)、点击 books在右边出现了 Headers,Headers下方是 General,response Headers,Request Headers

6)、General

7)、response Headers

响应头信息

示例一:

示例二:

示例三:

示例四:

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值