HTTP协议-响应报文详解(Respond)

目录

前言:

1.Respond报文

1.1报文格式

1.2格式图解

2.状态行(首行)

2.1状态码/状态码解释

(1)200 OK

(2)404 Not Found

(3)403 Forbidden

(4)405 Method Not Allowed

(5)500 Internal Server Error

(6)504 Gateway Timeout

(7)302 Move temporarily

(8)301 Moved Permanently

2.2状态码小结

2.3版本号

3.响应报头(Header)

3.1报头格式

3.2常见属性

(1)Content-Type

(2)Content-Length

4.空行

4.1空行标识

4.2空行作用

5.响应正文

5.1正文标识

5.2正文内容


前言:

 在了解完HTTP协议的基本内容和HTTP请求报文,本节主要针对HTTP协议的第二种报文-响应报文进行详解,对报文的具体格式以及每个关键词含义进行详细介绍。

序列:HTTP/HTTPS - 003


1.Respond报文

1.1报文格式

HTTP协议响应是以字符文本的格式传输,具体包含以下四大部分:

  1. 首行:[版本号]+[状态码]+[状态码解释],分别使用空格分隔;
  2. 响应头(Header):请求的属性,每个键值对独占一行,冒号+空格分割键和值;
  3. 空行:遇到空行表示Header部分结束;
  4. 正文(Body):空行后面的内容都是Body,Body允许为空字符串。如果Bodv存在,则在Header中会有一个Content-Length属性来标识Body的长度。如果服务器返回了一个html页面,那么html页面内容就是在body中。

1.2格式图解

 具体的响应Respond报文格式分布如图:

 开发中实际的响应报文实例: 

下文将针对响应报文这四大部分内容进行具体详解。 

2.状态行(首行)

[版本号]+[状态码]+[状态码解释]。

2.1状态码/状态码解释

 状态码表示访问一个页面的结果(是访问成功,还是失败,还是其他的一些情况....)。

以下为常见的状态码。

(1)200 OK

“200”表示访问服务器成功,这是一个最常见的状态码。

(2)404 Not Found

“404”表示请求访问的资源,在服务器上不存在。

(3)403 Forbidden

“403”表示访问被拒绝,当前主机没有权限。

有的页面通常需要用户具有一定的权限才能访问(登陆后才能访问),如果用户没有登陆直接访问,就容易见到403。

(4)405 Method Not Allowed

“405”表示访问的服务器不支持当前请求所用的方法。

HTTP中所支持的方法有GET,POST,PUT,DELETE等,但是对方的服务器不一定都支持所有的方法(或者不允许用户使用一些其他的方法)。

(5)500 Internal Server Error

“500”表示访问的服务器出现内部错误,这是一个不常见的状态码。

一般是服务器的代码执行过程中遇到了一些特殊情况(服务器异常崩溃),会产生这个状态码。

平时常用的网站很少会出现500(但是偶尔也能看到)。

(6)504 Gateway Timeout

“504”表示访问的服务器负载比较大,可能会导致出现超时的情况。

当服务器负载比较大的时候,服务器处理单条请求的时候消耗的时间就会很长,就可能会导致出现超时的情况。

(7)302 Move temporarily

“302”表示访问的服务器临时重定向,临时需要跳转到其他页面。

登陆页面中经常会见到 302,用于实现登陆成功后自动跳转到主页响应报文的header部分会包含一个Location字段,表示要跳转到哪个页面。

(8)301 Moved Permanently

“301”表示访问的服务器永久重定向,永久性的跳转到其他页面。

永久重定向,当浏览器收到这种响应时,后续的请求都会被自动改成新的地址。

301也是通过Location字段来表示要重定向到的新地址。

2.2状态码小结

状态码总结:

  • 以1开头表示信息性状态码;
  • 以2开头表示成功状态码;
  • 以3开头表示重定向状态码;
  • 以4开头表示客户端错误状态码;
  • 以5开头表示服务器错误状态码;

2.3版本号

 版本号表示本次HTTP协议的响应使用的是HTTP协议的具体哪个版本。与请求报文相对应,否则会出现通信错误。

如:HTTP1.0、HTTP1.1和HTTP2.0。

3.响应报头(Header)

3.1报头格式

 响应的属性,header的整体的格式也是“键值对”结构。每个键值对占一行,键和值之间使用分号分割。

响应报头的基本格式和请求报头的格式基本一致,类似于Content-Type,Content-Length等属性的含义也和请求中的含义一致。

报头的种类有很多,此处仅介绍几个常见的。

3.2常见属性

响应报头中的属性有很多都和请求报头中表示的含义相同,下边只介绍两个最关键的即可。

(1)Content-Type

表示响应的Body中的数据格式(响应报文里有Body,才有该属性存在)。

HTTP协议的响应格式一般有:

  1. html
  2. css
  3. JavaScript
  4. json
  5. 图片

后续给服务器提返回给主机,不同的Content-Type,服务器处理数据的逻辑是不同的。

服务器返回数据给浏览器,也需要设置合适的Content-Type,浏览器也会根据不同的Content-Type 做出不同的处理。

(2)Content-Length

 表示Body中的数据长度(请求报文里有Body,才有该属性存在)。

4.空行

4.1空行标识

遇到空行表示Header(报头)部分结束,同时也是Body(正文)部分开始。

4.2空行作用

 HTTP在传输层依赖TCP协议,TCP是面向字节流的,如果没有这个空行,就会出现“粘包问题”,空行就可以解决上述问题。

5.响应正文

5.1正文标识

空行后面的内容都是Body,Body允许为空字符串。

正文的具体格式取决于Content-Type。

5.2正文内容

正文的内容可以是:

  1. html
  2. css
  3. JavaScript
  4. json
  5. 图片

以上便是HTTP协议的响应报文详解Respond。

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

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

相关文章

书生浦语大模型实战营-课程笔记(4)

微调分为两种,增量预训练和指令跟随。 指令跟随微调: 1.只对答案计算Loss 2.训练时数据为一问一答的形式(input和output) 增量预训练: 只需要output的数据进行训练 xtuner:微调框架 操作部分的笔记参考git上的文档…

模块、包、库的区别

这三者都是通过import和from…import…语句实现的。 模块(module) Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。 简单来说任何一个以.py的文件都可以视为是一个模块(…

人工智能学习与实训笔记(六):神经网络之智能推荐系统

人工智能专栏文章汇总:人工智能学习专栏文章汇总-CSDN博客 本篇目录 七、智能推荐系统处理 7.1 常用的推荐系统算法 7.2 如何实现推荐 7.3 基于飞桨实现的电影推荐模型 7.3.1 电影数据类型 7.3.2 数据处理 7.3.4 数据读取器 7.3.4 网络构建 7.3.4.1用户特…

家庭动态网络怎么在公网访问主机数据?--DDNS配置(动态域名解析配置)

前言 Dynamic DNS是一个DNS服务。当您的设备IP地址被互联网服务提供商动态变更时,它提供选项来自动变更一个或多个DNS记录的IP地址。 此服务在技术术语上也被称作DDNS或是Dyn DNS 如果您没有一个静态IP,那么每次您重新连接到互联网是IP都会改变。为了避免每次IP变化时手动更…

使用C++,实现高精度加减乘除法运算!

我的个人主页 {\large \mathsf{{\color{Red} 我的个人主页} } } 我的个人主页 我的专栏: \mathcal{{\color{Green} 我的专栏:} } 我的专栏: 《精选文章》《算法》《每日一道编程题》《高精度算法》 文章目录 前言高精度计算初始模版string 转…

【Web】CTFSHOW java刷题记录(全)

目录 web279 web280 web281 web282 web283 web284 web285 web286 web287 web288 ​web289 web290 web291 web292 web293 web294 web295 web296 web297 web298 web299 web300 web279 题目提示 url里告诉我们是S2-001 直接进行一个exp的搜 S2-001漏洞分析…

【测试】测试用例篇

目 录 一. 设计测试用例的万能公式(六个)二.设计测试用例的具体方法1.等价类2.边界值3.因果图(判定表)4.场景设计法5.正交法6.错误猜测法 一. 设计测试用例的万能公式(六个) 设计测试用例的万能公式 测试用例的意义是帮助测试人员了解:测什…

linux 网络服务小实验

实验图和要求: 1)网关服务器:ens36:12.0.0.254/24,ens33:192.168.44.254/24;Server1:192.168.44.20/24;PC1和Server2:自动获取IP;交换机无需配置。…

GEE:最小距离(minimumDistance)回归教程(样本点、特征添加、训练、精度、参数优化)

作者:CSDN @ _养乐多_ 对于分类问题,这个输出通常是一个类别标签 ,而对于回归问题,输出通常是一个连续的数值。回归可以应用于多种场景,包括预测土壤PH值、土壤有机碳、土壤水分、碳密度、生物量、气温、海冰厚度、不透水面积百分比、植被覆盖度等。 本文将介绍在Google…

频繁跳槽 可能问题出在你的性格上

谈到跳槽,小伙伴们会想到什么呢?换工作?涨薪?你有没有想过,目前的工作不合适,除了公司的原因,也有可能是自己性格的原因呢? 频繁跳槽有哪些优势和劣势呢?针对这些疑问&…

2024年【A特种设备相关管理(电梯)】找解析及A特种设备相关管理(电梯)模拟考试

题库来源:安全生产模拟考试一点通公众号小程序 A特种设备相关管理(电梯)找解析是安全生产模拟考试一点通生成的,A特种设备相关管理(电梯)证模拟考试题库是根据A特种设备相关管理(电梯&#xff…

【STM32 CubeMX】I2C层次结构、I2C协议

文章目录 前言一、I2C的结构层次1.1 怎样在两个设备之间传输数据1.2 I2C如何传输数据1.3 硬件框图1.4 软件层次 二、IIC协议2.1 硬件连接2.2 I2C 总线的概念2.3 传输数据类比2.3 I2C信号2.4 I2C数据的含义 总结 前言 在STM32 CubeMX环境中,I2C(Inter-In…

开年炸裂-Sora/Gemini

最新人工智能消息 谷歌的新 Gemini 模型 支持多达 1M的Token,可以分析长达一小时的视频 1M Token可能意味着分析700,000 个单词、 30,000 行代码或11 小时的音频、总结、改写和引用内容。 Comment:google公司有夸大的传统,所以真实效果需要上…

鸿蒙语言ArkTS(更好的生产力与性能)

ArkTS是鸿蒙生态的应用开发语言 ArkTS提供了声明式UI范式、状态管理支持等相应的能力,让开发者可以以更简洁、更自然的方式开发应用。 同时,它在保持TypeScript(简称TS)基本语法风格的基础上,进一步通过规范强化静态检…

qt-C++笔记之打印所有发生的事件

qt-C笔记之打印所有发生的事件 code review! 文章目录 qt-C笔记之打印所有发生的事件1.ChatGPT问答使用 QApplication 的 notify 方法使用 QObject 的 event 方法 2.使用 QObject 的 event 方法3.使用 QApplication 的 notify 方法 1.ChatGPT问答 在Qt C中,若要打…

老兵(11)

百度文心一格,大约是一年前上线并免费向用户开放的。其实也不是免费,而是“电量”比较好获得,白送的就16/每天,如果只是好奇玩玩的话也算够吧。 当时就很开心,因为一直想着把一些文案图像化,做成漫画的形式…

从被“大V”忽悠到自主开发投资分析系统:我在基金投资中的跌宕起伏与转变

从被“大V”忽悠到自主开发投资分析系统:我在基金投资中的跌宕起伏与转变 回顾我初次涉足基金投资的经历,那是一段由盲目跟从、亏损惨重到痛定思痛、自我提升的曲折历程。起初,我深受某些财经“大V”的影响,他们凭借看似精准的市…

算法刷题:复写零

复写零 .习题链接题目描述算法原理初始值步骤1步骤2我的答案: . 习题链接 复写零 题目描述 给你一个长度固定的整数数组 arr ,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。 注意:请不要在超过该数组长度的位置写入元素…

LEETCODE 164. 破解闯关密码

class Solution { public:string crackPassword(vector<int>& password) {vector<string> password_str;for(int i0;i<password.size();i){password_str.push_back(to_string(password[i]));}//希尔排序int gappassword.size()/2;while(gap>0){for(int i…

Eclipse Version: 2023-03 (4.27.0) JDK19 Tomcat10.2

Eclipse Version: 2023-03 (4.27.0) JDK19 Tomcat10.2