HTTP响应是什么?
创始人
2024-04-17 19:17:18
0次

文章目录

  • HTTP响应
    • 1. 响应行
    • 2. 响应头
    • 3. 空行与响应体
    • 4. HTTP响应示例


HTTP响应

当客户端发起一个请求后,一般都会得到一个服务器的响应,断网或者服务器宕机的情况下除外。服务器发送给客户端的 HTTP 响应用于向客户端提供其请求的资源,以及客户端请求的执行结果。

与请求类似,HTTP 响应同样由四个部分组成,分别为响应行(状态行)、响应头、空行和响应体,如下图所示:
在这里插入图片描述

1. 响应行

响应行以 HTTP 协议版本、表示响应状态的状态码和形容这个状态的一个短语组成,每个部分使用空格分隔,如下所示:

HTTP/1.1 200 OK

其中,HTTP/1.1 为 HTTP 协议版本,200 为响应的状态码,OK 为状态文本。注意:响应行中的字母都是大写的。

HTTP 响应的状态码是一个三位的整数,其中状态码的第一位用来表示响应的类别,状态码一共有 5 类,如下表所示;

状态码状态码说明
1xx信息,服务器收到请求,需要请求者继续执行操作
2xx成功,操作被成功接收并处理
3xx重定向,需要进一步的操作以完成请求
4xx客户端错误,请求包含语法错误或无法完成请求
5xx服务器错误,服务器在处理请求的过程中发生了错误

有关 HTTP 状态码的详细信息会在《HTTP 状态码》一节中进行讲解。关于响应行中的状态文本则是一种易于阅读的短语,用来描述状态码的具体含义,例如:OK、Not Modified、Found 等。

2. 响应头

响应头与 HTTP 请求中的请求头类似,同样由头部字段名、冒号、空格和值组成,例如Date: Tue, 22 Sep 2020 02:00:55 GMT。响应头中包含了一系列服务器的信息,以及服务器对请求的响应。

HTTP 协议的响应头中常用的头部字段名以及含义如下表所示:

头部字段名说明示例
Accept-Ranges表明服务器是否支持指定范围请求及哪种类型的范围请求Accept-Ranges: bytes
Age从原始服务器到代理缓存形成的估算时间(单位为秒,不能为负数)Age: 12
Allow服务器支持的请求方法,当使用不支持的请求方式时返回 405Allow: GET, HEAD
Cache-Control告诉所有的缓存机制是否可以缓存及缓存类型Cache-Control: no-cache
Content-EncodingWeb 服务器支持的返回内容压缩类型Content-Encoding: gzip
Content-Language响应体的语言Content-Language: en,zh
Content-Length响应体的长度Content-Length: 348
Content-Location可替代请求资源的另一个备用地址Content-Location: /index.htm
Content-MD5返回资源的 MD5 校验值Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==
Content-Range使用范围请求时,定义返回的部分在整个返回体中的字节位置Content-Range: bytes 21010-47021/47022
Content-Type返回内容的 MIME 类型Content-Type: text/html; charset=utf-8
Date服务器做出响应的时间Date: Tue, 15 Nov 2010 08:12:31 GMT
ETag被请求变量的实体值ETag: “737060cd8c284d8af7ad3082f209582d”
Expires响应过期的日期和时间Expires: Thu, 01 Dec 2010 16:00:00 GMT
Last-Modified请求资源的最后修改时间Last-Modified: Tue, 15 Nov 2010 12:45:26 GMT
Location表示客户端应当到哪里去提取文档Location: http://c.biancheng.net/view/94.html
Pragma包括实现特定的指令,它可应用到响应链上的任何接收方Pragma: no-cache
Proxy-Authenticate把由代理服务器所要求的认证信息发送给客户端Proxy-Authenticate: Basic
refresh表示客户端应该在多少时间之后重定向一个资源Refresh: 5; url=http://c.biancheng.net/view/94.html
Retry-After当请求的资源被占用时,通知客户端在指定时间之后再次尝试Retry-After: 120
ServerWeb 服务器软件名称Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)
Set-Cookie设置 Http CookieSet-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1
Trailer在范围请求时,允许在响应的消息后面添加额外的元信息,比如消息的完整性校验,消息的数字签名,或者消息经过处理之后的最终状态等Trailer: Max-Forwards
Transfer-Encoding文件传输编码Transfer-Encoding:chunked
Vary告诉代理服务器是使用缓存响应还是从原始服务器请求Vary: *
Via告诉客户端响应是通过哪里发送的Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
Warning警告响应体可能存在的问题Warning: 199 Miscellaneous warning
WWW-Authenticate使用哪种验证方式去获取对资源的连接WWW-Authenticate: Basic

3. 空行与响应体

与 HTTP 请求中的空行相同,HTTP 响应中同样使用空行来表示响应头结束。响应体则是服务器根据客户端的请求返回给客户端的具体数据。

4. HTTP响应示例

将上面的几个部分组合到一起就构成了一个 HTTP 响应,下面以访问 c.biancheng.net 上的 hello.htm 页面为例,HTTP 响应如下所示:

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
Content-Length: 88
Content-Type: text/html
Connection: Closed

Hello, CSDN!

当服务器找不到客户端所请求的页面时,服务器会返回 404 错误,如下所示:

HTTP/1.1 404 Not Found
Date: Sun, 18 Oct 2012 10:36:20 GMT
Server: Apache/2.2.14 (Win32)
Content-Length: 230
Connection: Closed
Content-Type: text/html; charset=iso-8859-1

404 Not Found

Not Found

The requested URL /t.html was not found on this server.

当服务器执行 HTTP 请求的过程中出现错误时,HTTP 响应如下所示:

HTTP/1.1 400 Bad Request
Date: Sun, 18 Oct 2012 10:36:20 GMT
Server: Apache/2.2.14 (Win32)
Content-Length: 230
Content-Type: text/html; charset=iso-8859-1
Connection: Closed

400 Bad Request

Bad Request

Your browser sent a request that this server could not understand.

The request line contained invalid characters following the protocol string.

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...