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

news2024/11/26 15:28:38

目录

前言:

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.coloradmin.cn/o/1451142.html

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

相关文章

【LeetCode: 107. 二叉树的层序遍历 II + BFS】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

红队笔记Day4 -->多层代理(模拟企业拓扑)

声明:本机文章只用于教育用途,无不良引导,禁止用于从事任何违法活动 前几天的红队笔记的网络拓扑都比较简单,今天就来模拟一下企业的真实网络拓扑,以及攻击方法 一般的大企业的网络拓扑如下::…

【二叉树层序遍历】【队列】Leetcode 102 107 199 637 429 515 116 117 104 111

【二叉树层序遍历】【队列】Leetcode 102 107 199 637 429 515 116 117 102. 二叉树的层序遍历解法 用队列实现107. 二叉树的层序遍历 II解法199. 二叉树的右视图 解法637. 二叉树的层平均值 解法429. N叉树的层序遍历515. 在每个树行中找最大值116. 填充每个节点的下一个右侧节…

vue3-组合式 API

什么是组合式 API? 组合式 API (Composition API) 是一系列 API 的集合,使我们可以使用函数而不是声明选项的方式书写 Vue 组件。它是一个概括性的术语,涵盖了以下方面的 API: 响应式 API:例如 ref() 和 reactive()&a…

TCP_IP(6)

网络层 在复杂的网络环境中确定一个合适的路径. IP协议 与TCP协议并列,都是网络体系中最核心的协议. 基本概念 主机:配有IP地址,但是不进行路由控制的设备; 路由器:即配有IP地址,又能进行路由控制; 节点:主机和路由器的统称; 协议头格式 4位版本号(version):指定IP协议的版…

python 人脸检测器

import cv2# 加载人脸检测器 关键文件 haarcascade_frontalface_default.xml face_cascade cv2.CascadeClassifier(haarcascade_frontalface_default.xml)# 读取图像 分析图片 ren4.png image cv2.imread(ren4.png) gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 进行人脸…

Unity类银河恶魔城学习记录7-5 p71 Improving sword throwing state源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Sword_Skill.cs using System.Collections; using System.Collections.Ge…

基于Springboot+Vue实现的宿舍管理系统

基于SpringbootVue的宿舍管理系统 1.系统相关性介绍1.1 系统架构1.2 设计思路 2.功能模块介绍2.1 用户信息模块2.2 宿舍管理模块2.3 信息管理模块 3. 源码获取以及远程部署 前言: 在现代教育环境中,学生宿舍的管理显得尤为重要,需要一套能…

第五篇【传奇开心果系列】Python微项目技术点案例示例:中文有声故事书

传奇开心果微博系列 系列微博目录Python微项目技术点案例示例系列 微博目录一、微项目目标和背景二、雏形示例代码三、扩展思路四、用户自定义输入示例代码五、故事选择示例代码六、语音控制示例代码七、播放控制示例代码八、文本转换语音示例代码九、微项目雏形核心部分示例代…

情人节到了,写一份爱心程序(python)

前言 情人节到了,写一份爱心代码给喜欢的人呀 公式 首先我们介绍下爱心的公式的参数方程: x 16 s i n 3 ( t ) x 16sin^3(t) x16sin3(t) y 13 c o s ( t ) − 5 c o s ( 2 t ) − 2 c o s ( 3 t ) − c o s ( 4 t ) y 13cos(t) - 5cos(2t) - 2co…

K8S集群实践之十:虚拟机部署阶段性总结

目录 1. 说明: 2. 安装准备 2.1 每个节点设置双网卡,一卡做网桥(外部访问),一卡做NAT(集群内网访问) 2.2 准备一个可用的代理服务器 3. 由于虚拟机崩溃(停电,宿主机…

谁拿了最多奖学金——NOIP 2005 提高组

输入样例&#xff1a; 4 YaoLin 87 82 Y N 0 ChenRuiyi 88 78 N Y 1 LiXin 92 88 N N 0 ZhangQin 83 87 Y N 1 输出样例&#xff1a; ChenRuiyi 9000 28700 这道题用结构体做对吧 #include <bits/stdc.h> using namespace std; class student{public:string name;int FG…

微信小程序框架阐述

目录 一、框架 响应的数据绑定 页面管理 基础组件 丰富的 API 二、逻辑层 App Service 小程序的生命周期 注册页面 使用 Page 构造器注册页面 在页面中使用 behaviors 使用 Component 构造器构造页面 页面的生命周期 页面路由 页面栈 路由方式 注意事项 模块化…

Java的异常体系

一、体系简介 java中的Exception类的子类不仅仅只是像上图所示只包含IOException和RuntimeException这两大类&#xff0c;事实上Exception的子类很多很多&#xff0c;主要可概括为&#xff1a;运行时异常与非运行时异常。 在上述体系中&#xff0c;Error表示严重的系统错误&am…

C++面向对象程序设计-北京大学-郭炜【课程笔记(二)】

C面向对象程序设计-北京大学-郭炜【课程笔记&#xff08;二&#xff09;】 1、结构化程序设计结构化程序设计的不足 2、面向对象的程序设计2.1、面向对象的程序设计2.2、从客观事物抽象出类2.3、对象的内存分配2.4、对象之间的运算2.5、使用类的成员变量和成员函数用法1&#x…

optee UTA加载

流程 动态TA按照存储位置的不同分为REE filesystem TA&#xff1a;存放在REE侧文件系统里的TA&#xff1b; Early TA&#xff1a;被嵌入到optee os里的在supplicant启动之前就可用了。 这里我们讲的是常规的存放在REE侧文件系统里的TA。 通过GP标准调用的与TA通信的命令(opens…

C语言学习day14:数组定义和使用

定义变量&#xff1a; 数据类型 变量 值 数组定义&#xff1a; 数据类型 数组名[元素个数]{值1,值2,值3} 代码&#xff1a; int main() {//定义变量//数据类型 变量 值//数组定义//数据类型 数组名[元素个数]{值1,值2,值3}//数组下标 数组名[小标]//数组下标是…

Java学习第十五节之回顾方法的调用

方法的调用 package oop;public class Demo03 {public static void main(String[] args) {//实际参数和形式参数的类型要对应&#xff01;int add Demo03.add(1,2);System.out.println(add);}public static int add(int a,int b){return ab;}}package oop;//值传递 public cl…

列表推导式与生成表达式的区别

列表推导式与生成式表达式的区别&#xff1a; 列表推导式 res[i for i in range(6)] print(res) 结果&#xff1a; [0, 1, 2, 3, 4, 5] 生成表达式&#xff1a; res(i for i in range(6)) print(res) 结果&#xff1a; <generator object <genexpr> at 0x0000013EAD0…

mathtype公式

Mathtype 手写板 Win11手写板按钮灰色问题解决&#xff1a;在C:\Program Files\Common Files\microsoft shared\ink目录下粘贴mip.exe&#xff0c;C:\Program Files\Common Files\microsoft shared\ink\en-US目录下添加mip.exe.mui提取码y04v 公式识别 配合免费图片公式识别…