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…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
 
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
 
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散
前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说,在叠衣服的过程中,我会带着团队对比各种模型、方法、策略,毕竟针对各个场景始终寻找更优的解决方案,是我个人和我司「七月在线」的职责之一 且个人认为,…...
 
DBLP数据库是什么?
DBLP(Digital Bibliography & Library Project)Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高,数据库文献更新速度很快,很好地反映了国际计算机科学学术研…...
