集团官网
  • 国家级全民数字素养与技能培训基地
  • 河南省第一批产教融合型企业建设培育单位
  • 郑州市数字技能人才(码农)培养评价联盟

什么是状态行、响应头和响应正文?

编辑:云和数据 日期:2022-12-27 20:55

Web服务器返回给浏览器的响应信息由4个部分组成,分别是状态行、响应头、空行以及响应正文。HTTP响应的格式如图1所示。

http协议响应协议

下面是通过浏览器访问百度百科中词条python时,Web服务器返回的响应信息,具体内容如下。

HTTP/1.1 200 OKConnection: keep-aliveContent-Encoding: deflateContent-Security-Policy-Report-Only: default-src https:.Content-Type: text/html; charset=UTF-8Date: Thu, 15 Jul 2021 06:25:42 GMTServer: ApacheVary: Accept-EncodingTransfer-Encoding: chunked.

上述响应信息中,第1行代码是状态行,第2~9行代码是响应头,第10行是空行,第11~14行代码是响应正文。需要注意的是,即使响应信息中没有响应正文,也必须在末尾加上空行。

下面分别对状态行、响应头和响应正文进行介绍。

1.状态行

上述响应信息的状态行的具体内容如下。

HTTP/1.1 200 OK

在状态行中,HTTP/1.1表示HTTP的版本号,200表示响应状态码,OK表示响应状态码的简短描述。

响应状态码代表服务器的响应状态,它的作用是告知浏览器请求Web资源的结果,如请求成功、请求异常、服务器处理错误等。响应状态码及说明如下表所示。

响应状态码及说明

1671601839543_响应状态码.png

2.响应头

上述响应信息中,状态行下面的部分便是若干个响应头信息。响应头的格式与请求头的格式相同。关于响应头中的常用字段及常用值的介绍如下。

( 1) Cache-Control: must-revalidate、 no-cache, private。

Cache-Control表示服务器告知浏览器当前的HTTP 响应是否可以缓存,取值为must-revalidate表示在一个缓存过期之后,不能直接使用这个过期的缓存,必须检验之后才能使用;取值为no-cache表示浏览器可以缓存资源,每次使用缓存资源前都必须重新验证其有效性;取值为private表示响应只能被单个用户缓存,不能作为共享缓存。

(2) Connection: keep-alive、 closed。

Connection表示浏览器是否使用持久HTTP连接,取值为keep-alive表示使用持久连接;取值为closed 表示不使用持久连接。

(3) Content-Encoding: gzip、 compress, identity。

Content-Encoding表示服务器对特定媒体类型的数据进行压缩,取值为gzip表示采用Lempel-Ziv 压缩算法;取值为compress表示采用Lempel-Ziv-Welch 算法;取值为identity 表示数据未经压缩或修改。

(4) Content-Type: text/html;charset=UTF-8。

Content-Type表示服务器告知浏览器实际返回的内容的类型,取值为text/html;charset=UTF-8表示服务器返回资源文件的类型为text/html,字符编码格式为UTF-8。

3.响应正文

响应正文是服务器返回的具体数据,常见的数据是HTML源代码。浏览器在接收到HTTP响应后,会根据响应正文的不同类型进行不同的处理。如果响应正文是DOC文档,那么浏览器会借助安装在本机的Word程序打开这份文档;如果响应正文是RAR压缩文件,那么浏览器会弹出一个下载窗口让用户下载解压软件;如果响应正文是HTML文档,那么浏览器会在自身的窗口中展示该文档。

相关内容

抢先一步 鸿蒙(HarmonyOS)应用开发者高级认证 免费考! 适合人群计算机相关专业在校生(技师、中职、高职、本科、研究生)对鸿蒙(HarmonyOS)有兴趣的非计算机相关专业在校生目前正在从事移动应用的开发者目前正在从事计算机行业相关的人计算机专业高校老师所有对鸿蒙(HarmonyOS)有兴趣的人 培训方案掌握鸿蒙的核心概念和端云一体化开发、... 什么是Java的多态性(polymorphism)?它有哪些不同的形式? 多态性是Java面向对象编程的一个重要概念,它允许不同的对象以一致的方式响应同一个方法调用,具体表现为对象在运行时可以表现出多个不同的形态。多态性主要有两种不同的形式:编译时多态性(静态多态性)和运行时多态性(动态多态性)。1. 编译时多态性(静态多态性):   ... 如何学习和搭建Hadoop开发环境? Hadoop是大数据处理领域的重要平台,能够处理和分析大量数据。为了有效地利用Hadoop,我们需要学习其基础知识,并正确搭建开发环境。下面是详细的学习和搭建指南。一、学习Hadoop基础掌握基础概念和原理Hadoop主要由HDFS和MapReduce两部分组成。HDFS是分布式文件系统,Ma... UI 设计学习如何进阶成为高手 我总结了六种方法,帮助你走出舒适区,提高技能,成长为自信且经验丰富的UI设计高手一位经验丰富的 UI 设计师,往往十分看中应用程序界面的吸引力和视觉刺激,确保满足用户期望和需求。但是,如果你已经在 UI 设计圈摸爬滚打多年,仍然没有出色的作品,那你极有可能是因为陷入了一个舒适圈,UI技能一直原... 在Java中Executor和Executors的区别? 在Java中,Executor和Executors都与线程池和并发执行有关,但它们是不同的概念和类。1.ExecutorExecutor是一个接口,位于java.util.concurrent包中,用于表示一个执行任务的执行器。它只定义了一个方法:void execute(Runnable c... String类型的常见命令有哪些? String类型,也就是字符串类型,是Redis中最简单的存储类型。其value是字符串,不过根据字符串的格式不同,又可以分为3类:string是普通字符串,int整数类型,可以做自增、自减操作,float浮点类型,可以做自增、自减操作。String的常见命令有:SET:添加或者修改已经存在的...