【强烈建议收藏:计算机网络面试专题:HTTP协议、HTTP请求报文和响应报文、HTTP请求报文常用字段、HTTP请求方法、HTTP响应码】
一.知识回顾
之前我们一起学习了HTTP1.0、HTTP1.1、HTTP2.0协议之前的区别、以及URL地址栏中输入网址到页面展示的全过程&&DNS域名解析的过程、HTTP协议基本概念以及通信过程、HTTPS基本概念、SSL加密原理、通信过程、中间人攻击问题、HTTP协议和HTTPS协议区别。接下来我们就来学习一下【强烈建议收藏:计算机网络面试专题:HTTP协议、HTTP请求报文和响应报文、HTTP请求报文常用字段、HTTP请求方法、HTTP响应码】,发车啦,嘟嘟嘟!
二.HTTP请求报文和响应报文
HTTP是面向文本的,其报文中的每一个字段都是一些ASCII码串,并且每个字段的长度都是不确定的。
2.1 HTTP请求报文格式
HTTP请求报文主要由请求行、请求头部、请求正文三部分组成,如下图所示
2.1.1 请求行
请求行由三部分组成,分别为:请求方法、URL、协议版本。三者之间由空格分隔。
- 请求方法:包括GET、HEAD、PUT、POST、TRACE、OPTIONS、DELETE以及扩展方法,当然并不是所有的服务器都实现了所有的方法,部分方法即便支持,处于安全性的考虑也是不可用的。
- URL:统一资源定位符,可以提供该资源的路径。它是一种具体的 URI,即 URL 可以用来标识一个资源,而且还指明了如何 locate 这个资源。
补充:什么是URI呢?
URI(Uniform Resource Identifier) 是统一资源标志符,可以唯一标识一个资源。 - 协议版本:版本格式->HTTP/主版本号.次版本号,常用的有HTTP/1.0、HTTP/1.1、HTTP/2.0
HTTP请求报文中请求行中的请求方法相关补充:HTTP协议的方法都有哪些呢?
1. HTTP版本支持的方法
根据 HTTP 标准,HTTP 请求可以使用多种请求方法。
- HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。
- HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
2. HTTP请求的方法
方法 | 描述 |
---|---|
GET | 请求指定的页面信息,并返回实体主体。 |
HEAD | 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头 |
POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。 |
PUT | 从客户端向服务器传送的数据取代指定的文档的内容。 |
DELETE | 请求服务器删除指定的页面。 |
CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。 |
OPTIONS | 允许客户端查看服务器的性能。 |
TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
PATCH | 是对 PUT 方法的补充,用来对已知资源进行局部更新 。 |
2.1.2 请求头部
- 请求头部为HTTP请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔;
- 请求头部的最后会有一个空行,表示请求头部结束,接下来为请求正文,这一行非常重要,必不可少
常见请求头如下:
请求头 | 说明 |
---|---|
Host | 接受请求的服务器地址,可以是IP:端口号,也可以是域名。请求报文头部主要用于指定被请求资源的Internet主机和端口号,发送请求时,这个字段是必需的 |
User-Agent | 告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本。发送请求的应用程序名称,也就是浏览器名称 |
Connection | 指定与连接相关的属性,如Connection:Keep-Alive |
Accept-Charset | 通知服务端可以发送的编码格式 |
Accept-Encoding | 通知服务端可以发送的数据压缩格式,gzip、deflate。浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate) |
Accept-Language | 通知服务端可以发送的语言,浏览器申明自己接收的语言 |
Accept | 传输文件类型,text/html浏览器可以接受服务器回发的类型为 text/html,*/*代表浏览器可以处理所有类型(一般浏览器发给服务器都是发这个) |
Cookie | 可以表示用户状态的信息 |
Upgrade-Insecure-Requests | 升级为HTTPS请求 |
Referer | 当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理 |
x-requested-with:XMLHttpRequest | Ajax异步请求 |
Range | bytes=0-5。指定第一个字节的位置和最后一个字节的位置。用于告诉服务器自己想取对象的哪部分。 |
Cache-Control | 浏览器缓存策略 |
对于请求头中几个重要的信息进行补充说明
1.Connection:决定HTTP连接(不是TCP连接)是否在当前事务完成后关闭。
Connection:keep-alive。当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。
Connection:close。代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭, 当客户端再次发送Request,需要重新建立TCP连接。
Keep-Alive:多次请求复用一个TCP连接。
Keep-Alive: timeout=5, max=1000
2.User-Agent:这个字段可以帮助统计客户端用了什么浏览器、操作系统等
3.Cookie:Cookie提供了一种机制使得万维网服务器能够“记住”用户,而无需用户主动提供用户标识信息。也就是说,Cookie是一种对无状态的HTTP进行状态化的技术。
HTTP是无状态的:协议对于事务处理没有记忆能力,对同一个url请求没有上下文关系,每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接影响后面的请求应答情况
使用Cookie在服务器上记录用户信息:
Cookie:用来存储一些用户信息以便让服务器辨别用户身份的(大多数需要登录的网站上面会比较常见),比如cookie会存储一些用户的用户名和密码,当用户登录后就会在客户端产生一个cookie来存储相关信息,这样浏览器通过读取cookie的信息去服务器上验证并通过后会判定你是合法用户,从而允许查看相应网页。当然cookie里面的数据不仅仅是上述范围,还有很多信息可以存储是cookie里面,比如sessionid等。
4. Cache-Control:默认为private,响应只能够作为私有的缓存,不能再用户间共享。
- Cache-Control:public。响应会被缓存,并且在多用户间共享。正常情况,如果要求HTTP认证,响应会自动设置为private。
- Cache-Control:must-revalidate。响应在特定条件下会被重用,以满足接下来的请求,但是它必须到服务器端去验证它是不是仍然是最新的。
- Cache-Control:no-cache。响应不会被缓存,而是实时向服务器端请求资源。
- Cache-Control:max-age。设置缓存最大的有效时间,但是这个参数定义的是时间大小,而不是确定的时间点。单位是秒。
- Cache-Control:no-store在任何条件下,响应都不会被缓存,并且不会被写入到客户端的磁盘里,这也是基于安全考虑的某些敏感的响应才会使用这个。
2.1.3 请求数据
- 请求这部分需要看请求的方法,如果是GET请求就没有请求正文。
- 查看某一个请求数据,如下步骤所示:
进入浏览器,按下F12,打开浏览器的开发者工具查看某个HTTP请求的报文:
2.2 HTTP响应报文格式
HTTP响应报文主要由状态行、响应头部、响应正文三部分组成,如下图所示
2.2.1 状态行
状态行由3部分组成,分别为:协议版本、状态码、状态码描述。三者之前由空格分隔。
- 协议版本:版本格式->HTTP/主版本号.次版本号,常用的有HTTP/1.0、HTTP/1.1、HTTP/2.0
- 状态码:状态代码为3位数字,第一个数字定义了响应的类别,且有五类。1xx:指示信息——表示请求已接收,继续处理;2xx:成功——表示请求已被成功接收、理解、接受;3xx:重定向——要完成请求必须进行更进一步的操作;4xx:客户端错误——请求有语法错误或请求无法实现;5xx:服务器端错误——服务器未能实现合法的请求
- 状态码描述:每个状态码都代表了不同的含义,表示不同的响应信息。
常用状态码如下:
状态码 | 说明 |
---|---|
200 | 响应成功 |
301 | 永久重定向,搜索引擎将删除源地址,保留重定向地址 |
302 | 暂时重定向,重定向地址由响应头中的Location属性指定 |
304 | 缓存文件并未过期,还可继续使用,无需再次从服务端获取 |
400 | 客户端请求有语法错误,不能被服务器识别 |
403 | 服务器接收到请求,但是拒绝提供服务(认证失败) |
404 | 请求资源不存在 |
500 | 服务器内部错误 |
对于响应状态码的信息进行补充说明
1. 3xx状态码补充
2. 4xx状态码补充
2. 5xx状态码补充
2.2.2 响应头部
- 请求头部类似,但是还为响应报文添加了一些附加信息;
- 常见响应头部如下:
响应头 | 说明 |
---|---|
Server | 服务器应用程序软件的名称和版本 |
Content-Type | 响应正文的类型(是图片还是二进制字符串) |
Content-Length | 响应正文长度 |
Content-Charset | 响应正文使用的编码 |
Content-Encoding | 响应正文使用的数据压缩格式 |
Content-Language | 响应正文使用的语言 |
对于响应头部中几个重要的信息进行补充说明
1. Content-Type:请求的时候,告知服务端数据的媒体类(MediaType/MIME Type)。返回的时候告知客户端,数据的媒体类型。
2.2.3 响应正文
- 响应这部分也需要看响应的方法,如果是GET请求就没有响应正文。
- 查看某一个响应方式,如下步骤所示:
进入浏览器,按下F12,打开浏览器的开发者工具查看某个HTTP响应的报文:
三.总结
如果你看到这里啦,那必须要为你点赞了。
- HTTP协议
- HTTP请求报文基本格式、HTTP请求报文常用字段、HTTP请求方法
- HTTP响应报文基本格式、HTTP响应报文常用字段、HTTP响应码
其实学习就是这样,鼓噪乏味,但知道了为什么学习,为什么努力后,好像一切就没有想象总那么糟了。
我是硕风和炜,我们下篇文章见哦。
相关文章:
【强烈建议收藏:计算机网络面试专题:HTTP协议、HTTP请求报文和响应报文、HTTP请求报文常用字段、HTTP请求方法、HTTP响应码】
一.知识回顾 之前我们一起学习了HTTP1.0、HTTP1.1、HTTP2.0协议之前的区别、以及URL地址栏中输入网址到页面展示的全过程&&DNS域名解析的过程、HTTP协议基本概念以及通信过程、HTTPS基本概念、SSL加密原理、通信过程、中间人攻击问题、HTTP协议和HTTPS协议区别。接下来…...
关于Java中的静态块讲解
文章目录类的加载特性与时机类加载的特性类加载的时机static的三个常用地方什么是静态块?特点写法静态块 static怎么用?类的加载特性与时机 在介绍static之前可以先看看类的相关 类加载的特性 在JVM的生命周期里,每个类只会被加载一次。 类加载的原则…...
ledcode【用队列实现栈】
目录 题目描述: 解析题目 代码解析 1.封装一个队列 1.2封装带两个队列的结构体 1.3封装指向队列的结构体 1.4入栈函数实现 1.5出栈函数实现 1.6取栈顶数据 1.7判空函数实现 题目描述: 解析题目 这个题我是用c语言写的,所以队列的pu…...
【基础算法】双指针----字符串删减
🌹作者:云小逸 📝个人主页:云小逸的主页 📝Github:云小逸的Github 🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前…...
Billu靶场黑盒盲打——思路和详解
一、信息收集 1、探测内网主机IP可以使用各种扫描工具比如nmap,我这里用的是自己编写的。 nmap -n 192.168.12.0/24 #扫描IP,发现目标主机 2、先不着急,先收集一波它的端口(无果) nmap -n 192.168.12.136 -p 1-10000…...
【2363. 合并相似的物品】
来源:力扣(LeetCode) 描述: 给你两个二维整数数组 items1 和 items2 ,表示两个物品集合。每个数组 items 有以下特质: items[i] [valuei, weighti] 其中 valuei 表示第 i 件物品的 价值 ,we…...
【C++提高编程】C++全栈体系(二十四)
C提高编程 第三章 STL - 常用容器 九、map/ multimap容器 1. map基本概念 简介: map中所有元素都是pairpair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值)所有元素都会根…...
c++11 标准模板(STL)(std::unordered_set)(十一)
定义于头文件 <unordered_set> template< class Key, class Hash std::hash<Key>, class KeyEqual std::equal_to<Key>, class Allocator std::allocator<Key> > class unordered_set;(1)(C11 起)namespace pmr { templ…...
AI/CV大厂笔试LeetCode高频考题之基础核心知识点
AI/CV互联网大厂笔试LeetCode高频考题之基础核心知识点算法复习1、二叉树的遍历2、回溯算法3、二分搜索4、滑动窗口算法题5、经典动态规划6、动态规划答疑篇6.1、总结一下如何找到动态规划的状态转移关系7、编辑距离8、戳气球问题9、最长公共子序列 Longest Common Subsequence…...
华为OD机试题,用 Java 解【静态扫描最优成本】问题
最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…...
常见无线技术方案介绍
无线技术 无线网络大体有两种:WAN(广域网)、PAN(个人区域网)。 对于LoRa,NB-IoT,2G / 3G / 4G等无线技术,通常传输距离超过1 km,因此它们主要用于广域网(WA…...
收获满满的2022年
收到csdn官方的证书,感谢官方的认可!...
react的生命周期
目录 一、初始化阶段 constructor() static getDerivedStateFromProps() componentWillMount() / UNSAFE_componentWillMount() render(): componentDidMount() 二、运行阶段 componentWillUpdate() / UNSAFE_componentWillUpdate() render() getSnapsh…...
scanpy 单细胞分析API接口使用案例
参考:https://zhuanlan.zhihu.com/p/537206999 https://scanpy.readthedocs.io/en/stable/api.html scanpy python包主要分四个模块: 1)read 读写模块、 https://scanpy.readthedocs.io/en/stable/api.html#reading 2)pp Prepr…...
【Vue3 第二十一章】Teleport组件传送
一、基本使用场景 有时我们可能会遇到这样的场景:一个组件模板的一部分在逻辑上从属于该组件,但从整个应用视图的角度来看,它在 DOM 中应该被渲染在整个 Vue 应用外部的其他地方。 这类场景最常见的例子就是全屏的模态框。理想情况下&#…...
在 Windows Subsystem for Linux (WSL2) 的 Ubuntu 系统上配置 Vulkan 开发环境
在 Windows Subsystem for Linux (WSL2) 的 Ubuntu 系统上配置 Vulkan 开发环境Vulkan Tutorial https://vulkan-tutorial.com/ Development environment - Linux https://vulkan-tutorial.com/Development_environment 1. Vulkan - Cross platform 3D Graphics https://www…...
放苹果HJ61
入门题目 把m个同样的苹果放在n个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?注意:如果有7个苹果和3个盘子,(5,1,1)和(1,5&#…...
Windows下,OPC UA移植,open62541移植
OPC通信标准的核心是互通性 (Interoperability) 和标准化 (Standardization) 问题。传统的OPC技术在控制级别很好地解决了硬件设备间的互通性问题,在企业层面的通信标准化是同样需要的。OPC UA之前的访问规范都是基于微软的COM/DCOM技术, 这会给新增层面的通信带来不可根除的…...
【Tomcat与Servlet篇1】认识Tomcat与Maven
目录 一、什么是Tomcat 二、Tomcat的几个重要目录 conf文件编辑 Server.xml logs文件 Webapps目录 三、如何使用Tomcat 但是,如果出现了点击之后进行闪退的情况,那又是怎么回事呢? 原因1:环境变量没有配置 原因2&#…...
C++类和对象:拷贝构造函数和运算符重载
目录 一. 拷贝构造函数 1.1 什么是拷贝构造函数 1.2 编译器默认生成的拷贝构造函数 1.3 拷贝构造函数特性总结 二. 运算符重载 2.1 运算符重载概述 2.2 比较运算符重载(> > < <) 2.2.1 >运算符的重载 2.2.2 运算符的重载 2.…...
【IntelliJ IDEA】idea plugins搜索不出来,如何找到插件的解决方案
一、背景描述安装好IDEA后,想下载一些插件来使用,因为IDEA非常方便的一点就是插件使用非常的方便,但是经常会发现进入到插件市场无法搜索到插件的情况,这个时候就有点烦人了。那么怎么解决这个问题呢?以下会把我能想到…...
移动端自动化测试(一)appium环境搭建
自动化测试有主要有两个分类,接口自动化和ui自动化,ui自动化呢又分移动端的和web端的,当然还有c/s架构的,这种桌面程序应用的自动化,使用QTP,只不过现在没人做了。 web自动化呢,现在基本上都是…...
5 逻辑回归及Python实现
1 主要思想 分类就是分割数据: 两个条件属性:直线;三个条件属性:平面;更多条件属性:超平面。 使用数据: 5.1,3.5,0 4.9,3,0 4.7,3.2,0 4.6,3.1,0 5,3.6,0 5.4,3.9,0 . . . 6.2,2.9,1 5.1,2.5…...
技术干货 | Modelica建模秘籍之状态变量
在很多领域都有“系统”这个概念,它描述的往往是一些复杂关系的总和。假如我们将系统看做一个黑箱,那么,在系统的作用下,外界的输入有时会产生令人意想不到的输出,“蝴蝶效应”就是其中的典型案例。图1 一只南美洲亚马…...
LeetCode 2574. 左右元素和的差值
给你一个下标从 0 开始的整数数组 nums ,请你找出一个下标从 0 开始的整数数组 answer ,其中: answer.length nums.length answer[i] |leftSum[i] - rightSum[i]| 其中: leftSum[i] 是数组 nums 中下标 i 左侧元素之和。如果不…...
rollup环境配置
VUE2.x源码学习笔记 1. rollup环境配置 首先在VScode中新建文件夹vue_sc,然后终端打开定位到打开的文件夹,输入“npm init -y”初始化配置项,运行成功之后文件夹新增package.json文件 继续在终端运行"npm install babel/preset-env ba…...
二分查找与二分答案、递推与递归、双指针、并查集和单调队列
二分查找与二分答案 文章目录二分查找与二分答案应用总结例题木材加工题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示数据规模与约定思路代码递归与递推应用总结[NOIP2003 普及组] 栈题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示思…...
如何进行域名购买,获取免费ssl证书,使用springboot绑定ssl证书
前言 小编我将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注一下!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远!让我们在成长的道路上互相学习&#…...
LabVIEW网络服务安全2
LabVIEW网络服务安全2在客户端应用程序中创建签名对请求进行签名要求您具有能够从客户端的编程语言调用的MD5摘要算法以及SHA256加密摘要算法的实现。这两种算法通常都可用于大多数平台。还需要:1. 要使用的HTTP方法的字符串(“GET”、“POST”、“PUT”…...
java动态代理
目录儿一、代理模式的作用二、实现代理的方式三、动态代理的实现3.1 jdk动态代理3.2 cglib动态代理一、代理模式的作用 功能增强: 基于某个功能,再增加一些功能。 (比如目标类只负责核心功能,其他附属功能通过代理类完成。代理类的方法名与目…...
网站备案更改需要多久/班级优化大师电脑版
技术管理---从给答案到做引导 1 What 从给答案到做引导,意指在工作过程中指导同事工作时,应尽量从方法上进行引导,而不是直接给出问题的解决答案; 2 Why 显而易见,在一个组织中, 总有一些核心人员&#x…...
做网站怎么做推广/推广赚钱项目
Currently running services:Binder.Pged-------------------显示powerGenie的状态DockObserver-----------------显示当前dock状态或者set state <value> resetHsmStatSurfaceFlinger-----------------表面处理accessibility------------------可访问性account-------…...
网站建设网络公司整站源码/seo基础知识培训视频
首先,Spark是MapReduce-like(架构上和多数分布式计算框架类似),Spark有分配任务的主节点(Driver)和执行计算的工作节点(Worker)。 其次,Low-latency基本上应该是源于Work…...
找人做网站不算诈骗罪吗/seo关键词排名优化推荐
我觉得下面文章讲的非常不错,适合nodejs入门学习。 七天学会NodeJS...
先备案还是先做网站/长沙快速排名优化
Java读取properties文件的方法比较多,网上我最多的文章是“Java读取properties文件的六种方法”,但在Java应用中,最常用还是通过java.lang.Class类的getResourceAsStream(String name) 方法来实现,但我见到众多读取properties文件…...
如何建设公司网站 需要注意什么/代运营公司靠谱吗
数据类型 一、整型1、BIGINT语法:BIGINT [(display_size)] [AUTO_INCREMENT] [UNSIGNED] [ZEROFILL]存储:8字节。描述:最大的整数类型,支持的整数范围是:-9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807&…...