HTTP 协议
HTTP(hypertext transport Protocol);超文本传输协议,是浏览器与万维网服务器之间通信的规则。
规定了客户端与服务端之间互相发送内容的格式,客户端发给服务端的叫 请求协议,服务端返回给客户端的为 响应协议。
同时它也是无状态的,客户端向服务端请求资源后,服务端返回资源,两者连接的状态断开(现在一般优化保持 3000ms,keep-alive)。
1. 请求协议
请求,由客户端发送给服务端,分为四部分:请求方法(Request Method)、请求网站(Request URL)、请求头(Request Headers)、请求头(Request Body)。
请求协议格式:
请求首行 # 包括请求方式,路径,协议和版本,如:GET /index.html HTTP/1.1
请求头信息 # 请求头名称:请求头内容,键值对形式
空行 # 与请求体分隔开
请求体 # GET 无请求体,POST 有
1.1 请求方法
请求方法有很多种,最常用的有 GET、POST 请求。
GET 和 POST 请求方法的区别:
- HTTP 默认请求方法,无请求体,请求的数据会包含在 URL 中,数据最大 1k。
- 请求的数据不会包含在 URL中,而是在请求体中,以表单形式传输,大小没有限制。
几种常用的 get 请求:
- 在浏览器地址栏直接输入 url
- 页面上的超链接/图片链接(a 标签)
- 表单默认提交方式,也可以设置为 post
几种常用的 post 请求
- 登录某个网站:需要输入用户名、密码,不可能将这些信息也包含在 URL 中
- 上传文件:POST 请求大小无限制
1.2 请求的网站
URL:统一资源定位符,由协议名://域名:端口/路径 组成,如:http://www.xxx.com:80/index.html
,即我们要请求的资源路径。
1.3 请求头信息
请求头,用来说明服务器要使用的附加信息,我们可以通过以下方式查看:
F12 - Network - 选择相应的页面 - Request Headers
其中 Request Headers 即为请求头信息,以键值对的形式构成,下面简要说明一些常用的头信息:
-
Accept:指定客户端可以接收哪些类型信息,* 代表可以接收任意类型
-
Accept-Encoding:指定客户端支持的压缩格式
-
Accept-Language:指定客户端支持的语言
-
Connection:keep-alive,客户端支持的链接方式,保持一段时间,默认 3000ms
-
Cookie:维持当前会话,是服务器存储在客户端本地的用来跟踪会话的数据,服务器用来保存登录状态信息
-
Host:主机名
-
User-Agent:使服务器能识别客户端使用的操作系统,浏览器信息版本,做爬虫时加上它可以伪装成浏览器。
-
Content-Type:互联网媒体类型,用来表示请求中媒体类型信息,text/html 表示 HTML格式,application/json 表示 json 类型等。更多对应关系见:http://tool/oschina.net/commons
-
Referer:用来标识这个请求从哪个页面发过来,服务器拿到后可以用来在来源统计、防盗链处理等。
1.4 请求体
请求体一般为 POST请求中的表单数据,GET 请求,请求体为空。如果请求体中的中文,则使用 URL 编码,如:username=%E5%BC%A0%E4%B8%89&password=123
当我们登录某个网站之前,填写用户名和密码,以表单的形式将这些数据交给服务器。这时 Content-Type 变为了 application/x-www-form-urlencoded
,我们也可以将 Content-Type 设置为别的形式:
Content-Type | 提交数据方式 |
---|---|
application/x-www-form-urlencoded | 表单数据 |
multipart/form-data | 表单文件上传 |
application/json | 序列化 json 数据 |
text/xml | xml 数据 |
请求体中的字段信息:
- Content-Length:请求体长度,单位字节
- Keyword=hello:请求体内容,hello 为表单中输入的数据,keyword 为表单字段的名字
2. 响应协议
响应协议由服务端返回给客户端,分为:响应状态码(Response Status Code)、响应头(Response Headers)和响应头(Response Body)。
响应协议格式:
响应首行
响应头信息
空行
响应体
2.1 状态码
状态码是服务端的响应状态,通过状态码我们真正了解服务端是否正常给我们返回数据,下面是几种常用的状态码:
- 200:请求成功
- 404:请求资源没有找到
- 500:服务器内部发生错误
- 302 重定向,服务器要求浏览器再重新发现一个请求,服务器会发送一个响应头 Location,指定了新的 URL 地址。
2.2 响应头
包含了服务端的应答信息,如 Content-Type、Server 等,以下为几种常用的头信息:
-
HTTP/1.1 200 OK:HTTP 协议版本,状态码,表示请求成功
-
Date:响应产生的时间,有 8h 偏差(东八区)UTC时间
-
Last-Modified:资源最后修改的实际
-
Content-Encoding:响应内容的压缩格式
-
Server:包含服务器信息,如名称、版本
-
Content-Type:文档类型,即返回的数据类型
-
Set-Cookie:设置 Cookie,告诉浏览器要将次内容放在 Cookies 中,下次请求携带 Cookies 。
-
Expires:响应的过期时间,使代理服务器或浏览器将加载的内容更新到缓存中,再次访问就从缓存中加载,降低服务器负载。
-
X-UA-Compatible:兼容浏览器
2.3 响应体
响应头包含服务端返回给客户端的数据,如果请求的是网页,那么请求体就是 HTML 代码。如果请求的图片,则请求体是二进制数据。
在浏览器的开发者工具中,点击 Network —— Preview 即可看到响应体。
相关文章:
HTTP 协议
HTTP(hypertext transport Protocol);超文本传输协议,是浏览器与万维网服务器之间通信的规则。 规定了客户端与服务端之间互相发送内容的格式,客户端发给服务端的叫 请求协议,服务端返回给客户端的为 响应…...

公司新招了个人,一副毛头小子的样儿,哪想到是新一代卷王····
内卷,是现在热度非常高的一个词汇,随着热度不断攀升,隐隐到了“万物皆可卷”的程度。 在程序员职场上,什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事,我们可以帮他。 是技术太强的人吗?也不是…...

TSDF学习记录
【唐宇迪】三维重建-TSDF通俗解读 人工智能入门教程 水泡动画模拟(Marching Cubes) - 算法小丑 - 博客园 (cnblogs.com) TSDF 流程分析 首先需要构建一大块空区域采用体素网格来存储该区域需要计算每个体素的TSDF值及其权重 原理简述 SDF值&#x…...

【Linux】孤儿进程
在Linux中,如果子进程运行时,父进程因为某些原因先行终止,就称该子进程为孤儿进程。 我们编写如下代码: 子进程一直在运行,父进程运行一段时间后自动终止。运行该程序观察现象: 最开始时,子进程…...

ChatGPT解答:python大批量读写ini文件时,性能很低,有什么解决方法吗,给出具体的思路和实例
ChatGPT解答: python大批量读写ini文件时,性能很低,有什么解决方法吗,给出具体的思路和实例 ChatGPTDemo Based on OpenAI API (gpt-3.5-turbo). python大批量读写ini文件时,性能很低,有什么解决方法吗&…...

MySql主键id不推荐使用UUID
前言 昨天在某个技术群中,有个老哥发送了一个技术视频:讲的是一个毕业生面试被问,前后端的交互ID是使用自增的吗?为什么不使用UUID?最后的解释是说性能问题,这个引起了我的兴趣,查了一下资料总…...

密码算法(SM1、SM2、SM3、SM4、同态加密、密态计算、隐私计算和安全多方计算)
文章目录SM1 对称密码SM2 椭圆曲线公钥密码算法SM3 杂凑算法SM4 对称算法同态加密密态计算和隐私计算安全多方计算技术安全多方计算的应用场景对称加密算法非对称加密算法(公钥加密)参考文章SM1、SM2、SM3和SM4 为了保障商用密码的安全性,国家…...
保险行业中【内容行政系统】模块功能的实现
以下是一个基本的保险行业中的内容行政系统功能模块,包括对保单、理赔等方面的处理: 创建保单表创建理赔表创建保单查询视图创建理赔查询视图创建新保单更新保单状态创建理赔更新理赔状态-- 创建保单表 CREATE TABLE policies ( policy_id NUMBER PRIM…...

C语言入门知识——(7)VS2022的C语言基础调试
1、什么是bug 这个故事很多人都知道 1947年9月9日:第一个“Bug”被发现的时候:“1949年9月9日,我们晚上调试机器的时候,开着的窗户没有纱窗,机器闪烁的亮光几乎吸引来了世界上所有的虫子。果然机器故障了,…...

数据库可视化开发工具内容介绍
在现代化办公环境中,数据管理的重要性不言而喻。对于企业来说,将企业内部的数据做好规划和管理,可以给企业提升办公协作效率,为企业高层做出正确的经营决策奠定基础。本文主要给大家介绍的是数据化可视化开发工具的内容࿰…...

坚如磐石:TiDB 基于时间点的恢复(PiTR)特性优化之路丨6.5 新特性解析
本文介绍了 TiDB 数据库的基于时间点的恢复(PiTR)特性,该特性允许用户将数据库恢复到特定时间点,从而避免丢失重要数据。文章首先介绍了 PiTR 技术的基本概念和工作原理,接着探讨了 TiDB 对 PiTR 的优化,包…...
【云原生】K8S中PV和PVC
前言 容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题。首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失——容器以干净的状态(镜像最初的状态)重新启动。…...

24小时稳定性爆肝测试!国内外5款远程控制软件大盘点
本文目录前言一、ToDesk远程控制二、向日葵远程控制三、RayLink四、TeamViewer五、AnyDesk总结前言 不论你的职业是什么,从事互联网工作基本就离不开远程,从远程安装系统到远程搞设计,再到做服务器的调控,都需要靠远程来协助完成…...
【Java集合框架】篇三:List接口
1. List接口及主要实现类特点 List:有序、可重复(“动态”数组);因而常常使用List替换数组,因为List 的容量是动态的。 ArrayList:底层使用Object[]存储 线程不安全,添加、查找效率高 LinkedL…...

【算法经典题集】二分(持续更新~~~)
😽PREFACE🎁欢迎各位→点赞👍 收藏⭐ 评论📝📢系列专栏:算法经典题集🔊本专栏涉及到的知识点或者题目是算法专栏的补充与应用💪种一棵树最好是十年前其次是现在二分整数二分机器人…...

【c++】2023杭州月薪个税计算(chatGPT帮忙加注释)
参考信息 杭州市的个人所得税起征点是每月5000元。 个人所得税税率标准: 1、工资范围在1-5000元之间的,包括5000元,适用个人所得税税率为0%; 2、工资范围在5000-8000元之间的,包括8000元,适用个人所得税税率为3%; 3、工…...

【TypeScript】的上手学习指南!
目录TS简介TypeScript是什么?为什么要推荐使用TypeScript生态支持安装TypeScriptTS简介 TypeScript是什么? TypeScript官网 简介:TypeScript是JavaScript类型的超集,它可以编译成纯JavaScript。TypeScript可以在任何浏览器、任何计…...

红黑树(Insert())
文章目录红黑树代码红黑树性质红黑树vsAVL树红黑树的实现Insert()情况一:如果我插入的新节点时红色的情况二:叔叔是黑色或者不存在情况三: cur红,p为红,g为黑,u不存在或者为黑-双旋检查erase()红黑树vsAVL树红黑树的应用:红黑树 二叉搜索树 …...
MOV指令使用
mov用于数据传送。之后分为目的操作数和源操作数,目的操作数必须是通用寄存器或者内存单元:源操作数可以是具有相同数据宽度的通用寄存器或者内存单元,还可以是立即数。传送指令只影响目的操作数内容,不改变源操作数内容。 如&am…...
解释一下RecyclerView的适配器内部方法
RecyclerView的适配器(Adapter) 是一个连接数据模型和RecyclerView的桥梁,它在RecyclerView中提供了数据和布局之间的连接。下面是RecyclerView适配器中常用的几个方法的解释: 1.onCreateViewHolder(ViewGroup parent, int view…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...

基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...