HTTP响应是什么?

news2024/11/15 12:33:24

文章目录

  • 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

<html>
<body>
<h1>Hello, CSDN!</h1>
</body>
</html>

当服务器找不到客户端所请求的页面时,服务器会返回 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

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
   <title>404 Not Found</title>
</head>
<body>
   <h1>Not Found</h1>
   <p>The requested URL /t.html was not found on this server.</p>
</body>
</html>

当服务器执行 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

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
   <title>400 Bad Request</title>
</head>
<body>
   <h1>Bad Request</h1>
   <p>Your browser sent a request that this server could not understand.</p>
   <p>The request line contained invalid characters following the protocol string.</p>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/64246.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开源项目-绩效管理系统

开源项目-绩效管理系统 哈喽&#xff0c;今天给大家带来一个开源系统-绩效管理系统 源码下载​​​​​​​ 系统介绍 本系统为绩效考核系统&#xff0c;系统分为三大模块&#xff1a;考核设置&#xff0c;绩效考核&#xff0c;系统管理。 可满足小企业对员工进行考核。本系…

自定义maven骨架的添加与删除——完整详细介绍

目录一、创建好自己所需的目录结构二、命令配置2.1 配置总览2.2 指令配置说明2.3 指令配置详情三、配置Idea中maven新模板3.1 找到信息文件3.2 创建实例模板四、删除自定义模板4.1 删除本地仓库中的文件4.2 删除archetype-catalog.xml文件中的配置4.3 删除idea中的配置一、创建…

傻白入门芯片设计,指令集架构、微架构、处理器内核(十一)

早期计算机出现时&#xff0c;软件的编写都是直接面向硬件系统的&#xff0c;即使是同一计算机公司的不同计算机产品&#xff0c;它们的软件都是不能通用的,这个时代的软件和硬件紧密的耦合在一起&#xff0c;不可分离。 IBM为了让自己的一系列计算机能使用相同的软件,免去重复…

毕业设计-深度学习机器视觉铝型材表面缺陷识别

目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科…

excel表格怎么换行?单元格内换行的4个方法

今天分享一个excel单元格内换行的小技巧&#xff0c;希望对大家有用。我们在编辑excel文本时经常会遇到这样的情况&#xff1a;将文字内容用一种方式快速从中间插入。比如我们在制作表格时&#xff0c;要将区域内的数据全部合并到一张表格中&#xff08;即单元格区域&#xff0…

破茧化蝶,从Ring Bus到Mesh网络,CPU片内总线的进化之路

文章目录**为什么需要片内总线&#xff1f;****星型连接****环形总线&#xff08;Ring Bus&#xff09;****Mesh网络****结论**转载于&#xff1a;https://zhuanlan.zhihu.com/p/32216294 在大多数普通用户眼里&#xff0c;CPU也许就是一块顶着铁盖子的电路板而已。但是如果我…

【基于Tansformer的融合方法:感知损失:传递-感知损失】

HyperTransformer: A Textural and Spectral Feature Fusion Transformer for Pansharpening &#xff08;超级Transformer&#xff1a;一种用于全色锐化的纹理和光谱特征融合Transformer&#xff09; 先看这一篇简单了解Transformer &#xff08;是一篇高光谱图像融合&#x…

[附源码]计算机毕业设计JAVA疫情背景下叮当买菜管理系统

[附源码]计算机毕业设计JAVA疫情背景下叮当买菜管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; S…

postgresql_internals-14 记录

梳理一下之前理解不太清楚的知识点&#xff0c;重点内容可能会再拆出来单独研究。 原书链接&#xff1a;Index of / 一、 数据组织 1. pg系统库 template0&#xff1a;用于从逻辑备份还原&#xff0c;或创建不同字符集的数据库&#xff0c;不可以修改template1&#xff1a;真…

i.MX 6ULL 驱动开发 二十九:向 Linux 内核中添加自己编写驱动

一、概述 Linux 内核编译流程如下&#xff1a; 1、配置 Linux 内核。 2、编译 Linux 内核。 说明&#xff1a;进入 Linux 内核源码&#xff0c;使用 make help 参看相关配置。 二、make menuconfig 工作原理 1、menuconfig 它本身是一个软件&#xff0c;只提供图形界面配…

Android App 秒开实践方案~

一、背景 启动速度可以说是一个 APP 的门面&#xff0c;对用户体验至关重要。随着业务不断增加&#xff0c;需要初始化的任务也越来越多&#xff0c;如果放任不管&#xff0c;启动时长会逐步增加&#xff0c;为此雪球客户端针对应用启动时长做了大量优化工作。本文从应用启动基…

[读论文] Monocular 3D Object Reconstruction with GAN inversion (ECCV2022)

概述 项目主页&#xff1a;https://www.mmlab-ntu.com/project/meshinversion/ 方法名称&#xff1a;MeshInversion 输入&#xff1a;单目图像 &#xff08;in the wild&#xff0c;有背景的&#xff0c;没有抠图的&#xff09; 输出&#xff1a;textured 3D mesh key challen…

【metaRTC学习】metaRTC的demo运行说明(一)

metaRTC的github的地址为&#xff1a;GitHub - metartc/metaRTC: A cross-platform WebRTC SDK 其作者杨高峰的博客为&#xff1a;metaRTC的博客_CSDN博客-metaRTC,解决方案领域博主 其博客对其自己的demo的运行说明不够详细&#xff0c;刚入门的会一脸懵&#xff0c;本文对其…

Netty(二)- NIO三大组件之Buffer

文章目录一、Buffer 基本介绍二、Buffer 类及其子类三、Buffer 的使用四、关于Buffer 的注意事项和细节1. put和get的数据类型应该相同2. 可以将一个普通 Buffer 转成只读 Buffer3. 可以使用MappedByteBuffer让文件直接在内存中修改4. 可以通过 Buffer 数组完成读写操作&#x…

富文本编辑器 ck-editor5 的使用

最近在项目中需要用到富文本编辑器&#xff0c;据说ck-editor5很不错&#xff0c;于是就使用它了&#xff0c;不过在期间也遇到了很多问题&#xff0c;这里记录下。 一、引入ck-editor5 文档地址&#xff1a;Predefined builds - CKEditor 5 Documentation 这里有个坑&#…

YOLOv2-yolo9000-batter,faster,stronger 论文精度

参考大佬&#xff1a;同济子豪兄 YOLOv2-yolo9000 yolo9000-batter,faster,stronger Introduction 我们提出了一种新的方法来利用大量的图像分类数据&#xff0c;来扩大当前检测系统的范围。我们的方法使用目标分类的分层视图&#xff0c;允许我们将不同的数据集组合在一起…

个人需求1:代码提交这块的做法

老早之前的代码提交的步骤&#xff0c;真的是很繁琐在这里提交代码&#xff0c;现在和大家分析一下我当初的心得。 1.首先黄老师建立了一个jira号,记得把功能背景/方案说明/测试范围提前了解,问起来的时候也能回答,如下图1: 15324就是我本次的jira号,每次开发前先建立jira号,这…

小区访客导航GIS方案

1 应用功能设计 1.1 小区地图 1.1.1 小区地图浏览 基于GIS平台&#xff0c;对小区地图进行渲染发布&#xff0c;提供可视化显示浏览地图可以选择2D地图模式&#xff0c;用户可以在地图上快速查询和点击选择某个小区内的建筑物、POI等信息&#xff0c;并查看其相关属性信息&…

【现代机器人学】学习笔记二:刚体运动

这一节内容最开始在学之前是有些不屑的&#xff0c;这些坐标变换的内容天天都在玩&#xff0c;有什么复杂的&#xff1f;高翔博士的14讲貌似讲这些内容只用了几页。 不过认真一读才发现自己自大肤浅了。 之前我在北大研究院的时候&#xff0c;有一个实验室双聘的浙农林的老师&…

每天一个面试题:ThreadLocal底层原理和实现Demo

ThreadLocal底层原理和实现Demo每天一个面试题&#xff1a;ThreadLocal实现ThreadLocal的DemoThreadLocal底层原理为什么ThreadLocalMap的key设计为弱引用今天开始一个新专栏&#xff1a;每天一个面试题系列 也没有拿到令人心动的offer&#xff0c;看来自己学习方式和能力还是差…