什么是HTTP协议响应流
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是HTTP协议响应流相关的知识,希望对你有一定的参考价值。
一般情况下,服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息。
HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
第一部分:状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。
第一行为状态行,(HTTP/1.1)表明HTTP版本为1.1版本,状态码为200,状态消息为(ok)
第二部分:消息报头,用来说明客户端要使用的一些附加信息
第二行和第三行和第四行为消息报头,
Date:生成响应的日期和时间;Content-Type:指定了MIME类型的html(text/html),编码类型是ISO-8859-1
第三部分:空行,消息报头后面的空行是必须的
第四部分:响应正文,服务器返回给客户端的文本信息。
空行后面的html部分为响应正文。
参考技术A HTTP协议响应流是指在客户端向服务器发起请求后,服务器通过网络传输向客户端返回的数据流。HTTP协议响应流包括一个响应行和若干个响应头域。响应行包括 HTTP 协议的版本、状态码和状态信息,如下所示:
HTTP/1.1 200 OK
响应头域则包括关于响应内容的元信息,如内容类型、内容长度、服务器名称等。例如:
Content-Type: text/html
Content-Length: 1234
Server: Apache/2.4.18
在响应头域之后,是一个空行,然后是响应正文,即服务器返回给客户端的内容。
例如,一个完整的 HTTP 响应流可能看起来像这样:
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234
Server: Apache/2.4.18
<html>
<head>
<title>Example Page</title>
</head>
<body>
<p>This is an example page.</p>
</body>
</html>
注意,上述内容是一个简化版的 HTTP 响应流,在实际应用中,还有许多其他响应头域可能会包含在响应流中。 参考技术B 当服务器收到浏览器的请求后,会发送响应消息给浏览器。一个完整的响应消息主要包括响应首行、响应头信息、空行和响应正文。
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,然后再响应给浏览器。本回答被提问者和网友采纳 参考技术C Http Connection有两种连接方式:短连接和长连接;短连接即一次请求对应一次TCP连接的建立和销毁过程,而长连接是多个请求共用同一个连接这样可以节省大量连接建立时间提高通信效率。目前主流浏览器都会在请求头里面包含Connection:keep-alive字段,该字段的作用就是告诉HTTP服务器响应结束后不要关闭连接,浏览器会将建立的连接缓存起来,当在有限时效内有再次对相同服务器发送请求时则直接从缓存中取出连接进行通信。当然被缓存的连接如果空闲时间超过了设定值(如firefox为115s,IE为60s)则会关闭连接。
当使用短连接的时候Recipient可以通过服务器端对Connection的关闭来正确获得消息体的结束位置;但长连接的时候Recipient怎么正确得知相邻两次请求的响应内容的分界位置呢?主要是采用设置响应头Content-Length或者Transfer-Encoding:chunked的方法来解决这一问题。
Chunked transfer encoding是一种数据传输机制,将消息体分成若干块从Server传输到Recipient(接收者);目前采用chunked传输方式比较多,为什么要采用chunked下面会说;如果不采用chunked传输方式则必须设置Content-Length字段,以便使Recipient能够正确获知消息体的结束位置,而为什么采用chunked不用设置Content-Length字段呢?因为chunked传输方式特定的格式可以使Recipient正确获知消息体的结束。
Chunked传输即分块传输:将响应主体分成若干块,并在每一块前面加上该块数据的长度以及回车换行,这样Recipient(如浏览器)就可以根据这个长度值正确接收每一块数据,最后以一个0长度的分块作为消息体的结束标志。采用该传输方式Sender在开始传输响应内容到Recipient前不需要知道内容的长度。 参考技术D HTTP是超文本传输协议,而响应流则是使用该协议时,对向网站传输文本的接受及传输情况
ajax基础6--http请求消息和状态码
HTTP协议简介
什么是通信协议
通信协议(Communication Protocol
)是指通信的双方完成通信所必须遵守的规则和约定。
通俗的理解:通信双方采用约定好的格式来发送和接收消息,这种事先约定好的通信格式,就叫做通信协议。
互联网中的通信协议
客户端与服务器之间要实现网页内容的传输,则通信的双方必须遵守网页内容的传输协议。
网页内容又叫做超文本,因此网页内容的传输协议又叫做超文本传输协议(HyperText Transfer Protocol) ,
简称 HTTP 协议。
HTTP(⭐⭐⭐)
什么是HTTP协议
HTTP 协议即超文本传送协议 (HyperText Transfer Protocol
) ,它规定了客户端与服务器之间进行网页内容传输时,所必须遵守的传输格式。
例如:
-
客户端要以HTTP协议要求的格式把数据提交到服务器
-
服务器要以HTTP协议要求的格式把内容响应给客户端
HTTP协议的交互模型
HTTP 协议采用了 请求/响应 的交互模型。
HTTP请求消息
什么是HTTP请求消息
由于 HTTP
协议属于客户端浏览器和服务器之间的通信协议。因此,客户端发起的请求叫做 HTTP 请求,客户
端发送到服务器的消息,叫做 HTTP 请求消息。
注意:HTTP
请求消息又叫做 HTTP
请求报文
HTTP请求消息的组成部分(⭐⭐⭐)
HTTP
请求消息由请求行(request line
)、请求头部( header
) 、空行 和 请求体 4 个部分组成。
请求行
请求行由请求方式、URL 和 HTTP 协议版本 3 个部分组成,他们之间使用空格隔开。
请求头部
请求头部用来描述客户端的基本信息,从而把客户端相关的信息告知服务器。比如:User-Agent 用来说明当前是什么类型的浏览器;
Content-Type
用来描述发送到服务器的数据格式;Accept 用来描述客户端能够接收什么类型的返回内容;Accept-Language
用来描述客户端期望接收哪种人类语言的文本内容。
请求头部由多行 键/值对 组成,每行的键和值之间用英文的冒号分隔
请求头部 – 常见的请求头字段
关于更多请求头字段的描述,可以查看 MDN
官方文档:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers
空行
最后一个请求头字段的后面是一个空行,通知服务器请求头部至此结束。
请求消息中的空行,用来分隔请求头部与请求体
请求体
请求体中存放的,是要通过 POST
方式提交到服务器的数据。
注意:只有 POST
请求才有请求体,GET
请求没有请求体!
HTTP响应消息
什么是HTTP响应消息
响应消息就是服务器响应给客户端的消息内容,也叫作响应报文。
HTTP响应消息的组成部分(⭐⭐⭐)
HTTP响应消息由状态行、响应头部、空行 和 响应体 4 个部分组成,如下图所示:
状态行
状态行由 HTTP 协议版本、状态码和状态码的描述文本 3 个部分组成,他们之间使用空格隔开
响应头部
响应头部用来描述服务器的基本信息。响应头部由多行 键/值对 组成,每行的键和值之间用英文的冒号分隔。
响应头部 – 常见的响应头字段
关于更多响应头字段的描述,可以查看 MDN
官方文档:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers
空行
在最后一个响应头部字段结束之后,会紧跟一个空行,用来通知客户端响应头部至此结束。
响应消息中的空行,用来分隔响应头部与响应体。
响应体
响应体中存放的,是服务器响应给客户端的资源内容。
HTTP请求方法
什么是HTTP请求方法
HTTP 请求方法,属于 HTTP 协议中的一部分,请求方法的作用是:用来表明要对服务器上的资源执行的操作。最常用的请求方法是 GET
和 POST
。
HTTP的请求方法(⭐⭐⭐)
HTTP响应状态码
什么是HTTP响应状态码
HTTP 响应状态码(HTTP Status Code
),也属于 HTTP
协议的一部分,用来标识响应的状态。
响应状态码会随着响应消息一起被发送至客户端浏览器,浏览器根据服务器返回的响应状态码,就能知道这次
HTTP
请求的结果是成功还是失败了。
HTTP响应状态码的组成及分类
HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字用来对状态码进行细分。
HTTP 状态码共分为 5 种类型:
完整的 HTTP 响应状态码,可以参考 MDN
官方文档 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status
常见的HTTP响应状态码(⭐⭐⭐)
2** 成功相关的响应状态码
2** 范围的状态码,表示服务器已成功接收到请求并进行处理。常见的 2** 类型的状态码如下:
3** 重定向相关的响应状态码
3** 范围的状态码,表示表示服务器要求客户端重定向,需要客户端进一步的操作以完成资源的请求。常见的 3** 类型的状态码如下:
4** 客户端错误相关的响应状态码
4** 范围的状态码,表示客户端的请求有非法内容,从而导致这次请求失败。常见的 4** 类型的状态码如下:
5** 服务端错误相关的响应状态码
5** 范围的状态码,表示服务器未能正常处理客户端的请求而出现意外错误。常见的 5** 类型的状态码如下
以上是关于什么是HTTP协议响应流的主要内容,如果未能解决你的问题,请参考以下文章