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

2023-10-31

响应报文

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

响应头信息

示例一:

示例二:

示例三:

示例四:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 解决“warning #188-D enumerated type mixed with another type”告警

    今天分享一个之前我之前在嵌入式开发时候遇到的一个告警提示 首先我们看一下这个告警提示 warning 188 D enumerated type mixed with another type 其翻译过来是 警告 188 D枚举类型与其他类
  • C--小Why的商品归位-- 牛客小白月赛77

    输入 3 3 1 1 2 1 3 2 3 输出 2 解析 先不考虑购物车的容量 即购物车容量为无限大 这样我们可以通过每种货物上车 下车的时间计算出每一个时间点内 购物车中货物的数量 统计出所有时间点内 货物数量的最大值max 这个最大值所
  • 电商平台项目----项目搭建

    目录 项目介绍 其他配置 eslint 校验功能关闭 src文件简写方法 配置别名 项目路由分析 vue router 路由 路由组件 完成非路由组件 Header Footer 组件 步骤 配置less 路由组件的搭建 路由组件与非路由组
  • 关于微信小程序使用JavaScript求解背包问题

    背包问题求解 拟解决生活中常见的问题之一 背包问题 wxml wxss js 拟解决生活中常见的问题之一 背包问题 该问题要求在一个物品集合中选择合适的物品放入背包 在放入背包中的物品总重量不超过背包容量的前提下 希望放入背包的物品总价值最
  • 学scratch和机器人编程哪个好

    学scratch和机器人编程哪个好 小孩的学习一直都是家长们非常关心和重视的一件事情 很多的家长在培养孩子的学习方面也可以说是相当耐心的 会给孩子选择一些能够有利于孩子成长的课程 就拿现在很多的家长想要孩子去学习机器人编程的课程来说 有的家
  • 电脑取消撤销快捷键是什么_电脑健盘中的所有英文组合意思超值解释建议收藏...

    电脑键盘上 所有英文键的意思 1 Esc 取消和退出键 2 Tab 表格键切换键 3 Caps Lock 字母大小写切换键 4 Shift 转换键 5 Ctrl 控制键 需要配合其他键或鼠标使用 例如复制CtrI C 6 Alt 可选 切换
  • 《Linux设备节点创建》用户空间ueventd创建设备节点规则

    转自 http blog csdn net tankai19880619 article details 11726371 说明 本文基于Android2 3和Linux2 6 其余版本仅供参考 一 devfs udev和sysfs是什么关
  • 补充对“Cannot determine link language for target”出现该问题的另外一种原因

    在上一篇的文章里面 我曾今讲解为什么会出现如下错误提示的原因 CMake Error CMake can not determine linker language for target xxxxx CMake Error Cannot d
  • Failed connect to 192.168.213.129:8080; No route to host

    在VMware虚拟机中运行tomcat 但是在主机访问虚拟机中的Tomcat的时候出现无法访问的情况 但是两者又能ping的通 在另一个虚拟机中用curl命令来运行的时候抛出如下异常 命令如下 curl XGET http 192 168
  • 为什么要坚持写博客?

    我是一个一直不喜欢做笔记的人 从小学开始一直到研究生 好记性不如烂笔头的话一直都深知其意 但是一直对它没能形成一个较为深刻的认识 感觉很耗时间 做笔记也总是找不到重点 好几次决定开始好好做笔记 记录自己的进步以及于自己有用的知识点 到头来
  • 大小堆以及TOP K问题

    完全二叉树 如上图所示 我们可以将完全二叉树的结点按照层序遍历的顺序储存在一个数组中 那么当完全二叉树中的某个结点位于array的i处时 其左子节点必位于2i 1处 i gt 0 其右结点必位于array的2i 2处 这样我们就可以轻易的实
  • 互联网摸鱼日报(2023-04-03)

    互联网摸鱼日报 2023 04 03 博客园新闻 华为为什么要守住 不造车 底线 蔚来李斌 蔚来手机将于三季度发布和交付 电商价格战 淘宝舞剑 意在何处 ChatGPT科研神器 论文翻译润色一键搞定 还能帮你读代码 一夜蹿红 又一款中国出海
  • loadrunner关于回放脚本时session失效的问题

    在使用loadrunner录制脚本后 进行回放时 会出现session已经失效的情况 为解决这个问题 就应该将请求中的userSession进行参数化 使其自动获得当前的userSession 具体脚本如下 在我们打开连接时 首先我们会向服
  • CreateEvent自动重置事件对象

    include
  • git查看和切换账号

    查看当前登录账号 git config user name 查看当前登录邮箱 git config user email 修改用户名和邮箱 git config global user name your name git config g
  • 论文理解之增加换脸效果 FaceShifter: Towards High Fidelity And Occlusion Aware Face Swapping

    论文 FaceShifter Towards High Fidelity And Occlusion Aware Face Swapping 论文地址 https arxiv org pdf 1912 13457 pdf 换脸是非常吸引人的
  • uniapp 自定义弹窗组件

    先上效果 组件源码 slot modal vue
  • npm配置文件

    npm配置文件是 npmrc 默认在用户目录下 如果没有找到 用命令来看 npm config get userconfig 查看配置文件路径 以下config命令也是很好用 npm config ls l 查看所有配置项 npm conf
  • I2C总线上的上拉电阻设置

    https wenku baidu com view 985db25e4a7302768e9939f8 fr ViewCollect i2c原理讲解 问 如题 除了地址不重复外 听说IC 数量只受到总线的最大电容 400pF 限制 那么电容
  • HTTP请求响应系列02_响应报文的详解

    响应报文 1 响应报文的详解 上篇文字讲的 请求报文 本篇主要解释响应报文包括的内容 响应报文的内容也包括三部分 分别是 响应行 响应头 响应体 这三部分放的都是信息 是S端发给B端的信息 道理是一样的 响应 就是请求后的结果 栗子 接上篇