响应报文

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

响应头信息

示例一:

示例二:

示例三:

示例四:

HTTP请求响应系列02_响应报文的详解相关推荐

  1. php渲染nodejs api,nodejs通过响应回写渲染页面步骤详解

    这次给大家带来nodejs通过响应回写渲染页面步骤详解,nodejs通过响应回写渲染页面的注意事项有哪些,下面就是实战案例,一起来看一下. 我们一般通过node框架提供的api操作页面渲染,如何利用原 ...

  2. kubernetes系列11—PV和PVC详解

    kubernetes系列11-PV和PVC详解 原文:kubernetes系列11-PV和PVC详解 本文收录在容器技术学习系列文章总目录 1.认识PV/PVC/StorageClass 1.1 介绍 ...

  3. Nacos系列--权重(负载均衡)--作用/详解

    原文网址:Nacos系列--权重(负载均衡)--作用/详解_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍Nacos的权重的用法,它是一种负载均衡的方法. 权重的含义 Nacos控制台可以设置 ...

  4. 深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)

    上篇文章<深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇)> 介绍了properties与environments, ...

  5. axios请求接口http_使用axios请求接口,几种content-type的区别详解

    axios的使用 安装(一般使用框架的话, 脚手架都集成了) $ npm install axios 请求示例 // POST axios.post('/user', { firstName: 'Fr ...

  6. flutter图片点击跳转_Flutter系列之Platform Channel使用详解

    PS:逐渐体会到关键少数原则的重要性,接下来就是付诸实践了,另外科创50ETF明天开始限额销售,可以适当关注或入手一点. 前面几篇文章介绍了 Navigator 组件.Flex 布局.图片加载.Wid ...

  7. 如何获取请求端真实IP和远程主机IP详解

    如何获取请求端真实IP和远程主机IP详解 需求背景 一.Remote_Addr 情况 一: 情况二: java中获取Remote_Addr的api 二.X-Forwarded-For java中获取X ...

  8. SAP PO 消息报文存储详解(永久保存SAP PO中间件消息之三)

    C#连接SAP HANA数据库(永久保存SAP PO中间件消息之一) SAP PO 消息监控里消息状态预览的设置(永久保存SAP PO中间件消息之二) SAP PO 消息报文存储详解(永久保存SAP ...

  9. 红米3 android 版本,红米3四款手机有什么不同?红米3系列手机各版本区别详解

    近日,红米手机3的指纹识别升级版本通过工信部认证正式亮相.今天红米3系列产品再次亮相工信部.加上此前亮相的红米3指纹识别升级 版,如今工信部认证中共有4款红米3系列的手机.分别是2015810/201 ...

最新文章

  1. 看了看カルタグラ~魂ノ苦悩~(カルタグラ~ツキ狂イノ病~PS2移植版)的官网...
  2. poj1815最小割
  3. [Android]安装 Android Studio 第一行Android代码
  4. PHP+Mysql查询上一篇和下一篇文章实例
  5. 编写访问数据库的应用层程序,经常catch出的一些错误
  6. 学计算机辐射,离散数学对计算机专业系统知识辐射作用.doc
  7. 嵌入式ctags跳转和全局打印日志
  8. 原根求解算法 NTT算法
  9. 随笔37 JVM内存
  10. 软件评测师32小时-第一小时 软件测试概论
  11. 腾讯信鸽海量移动推送服务是如何构建的
  12. 树莓派Pico 开机自动运行程序
  13. 关键成功因素法(CrISical Success Factors,CSF)
  14. win10系统下office2003和office2016兼容
  15. 雷顿学院大数据一期课程免费下载
  16. 新人略谈关于积分墙盈利模式的思考
  17. 元气森林们迈入新消费后时代
  18. Python实现--使用微信定时每天和女友发送定制消息(附代码教程)
  19. Android手机做电脑摄像头
  20. 文件被其他程序占用及解决方法

热门文章

  1. VTP的简单应用和配置
  2. 迅雷前CEO陈磊涉嫌职务侵占被调查,案由包括挪用公司数千万资金用于非法炒币
  3. PAT乙级——1009 说反话
  4. OPPO R17系列
  5. 数据库基础(数据库的由来 + 第一、二、三范式)
  6. java+ssm+mysql图书借阅管理系统
  7. C/C++ 函数指针
  8. oracle存储过程报错 跳过,oracle调试存储过程的过程详解
  9. Git的基本使用-张明阳-专题视频课程
  10. iphone自动旋转与调整大小