HTTP和HTTPS
目录HTTP请求行方法get和post的区别URL查询语句版本号请求报头3Content-Type4User-Agent(UA)6CookieHTTP格式简略图为HTTP的响应响应行常见的状态码以及状态状态码的描述重定向HTTPS加密对称加密非对称加密对称加密和非对称加密结合引入中间人攻击引入CA证书引入HTTPS的工作流程小结HTTPSHTTPHTTP协议是基于应用层的网络传输协议中文名为超文本传输协议应用层协议解释的是应用层传输的数据要干啥。由于HTTP协议是应用层协议更依赖于下层的TCP或UDP协议。 高版本的HTTP会基于UDPHTTP的应用场景主要有web开发网页前后端的通信移动端的APP和其他服务器之间的通信……客户端与服务器之间的交互模型有很多比如多问一答多个独立请求一条响应一问多答单次请求多条响应比如下载一个大文件将这个文件分成一块一块持续发放多问多答多个请求多个响应请求和响应之间数量对等但没有必然的顺序关系一问一答一个请求一个响应一一对应是HTTP协议的基础HTTP请求的技基础格式主要是四大部分请求行请求报头空行请求正文请求行请求行有三部分组成Method,url,version每个部分之间用空格区分方法主要的方法有get 、post、 put、 delete ……get的用途是获取资源post是传输实体主体或者说请求体和响应体put也是传输文件delete是删除文件方法之间有规范但可以混用比如post可以查询更新删除get和post是最常见的方法 get请求中大多数没有正文数据一般在url中post请求中一般有正文数据一般在正文中在登录或者说上传文件比如更新头像的场景时容易出现get和post的区别语义不同get一般用于获取数据post一般是提交数据get请求一般是幂等的post不是所以get可以被缓存而post不行幂等指的是多次请求得到的响应结果一样get请求的正文一般为空数据是是在查询语句中 post的查询语句一般为空数据在正文中URL请求首行的第二部分URL中文名叫做唯一资源定位符它不是HTTP中特有的很多协议都有POSThttps://leetcode.cn/graphql/HTTP/1.1GEThttps://passport.baidu.com/passApi/js/wrapper.js?cdnversion1784190973616_1784190973332HTTP/1.1POSThttps://nav-edge.smartscreen.microsoft.com/api/browser/edge/navigate/3HTTP/1.1加粗的部分就是首行当中的Url格式一般为http://user:passwww.example.jp:80/dir/index.htm?uid1#ch1http 协议类型:// 分隔协议与地址现在的URL中一般没有用户和密码协议后面就紧跟着地址user 用户名 分隔用户名和密码pass 密码 分隔认证信息用户和密码和主机地址www.example.jp 域名 分隔域名和端口号80 端口号/ 分隔主机和带层次的资源路径index.htm 资源路径 分隔资源路径和查询语句uid1 查询语句# 分隔查询语句和锚点ch1 锚点查询语句由键值对组成以连接键值键值对可以有多个彼此之间用连接由于由于由于查询语句的键和值是自定义的但像“/”“?”“”等字符已经被URL当作特殊意义理解所以这些字符不能在查询语句中随意出现需要对这些特殊字符进行转义汉字也需要转义。将待转义的字符转成16进制每两个16进制为一组每组前加上一个%%xy例如李转义为%E6%9D%8E版本号当前协议的版本类型请求报头Host: miao.baidu.comConnection: keep-aliveContent-Length: 2139sec-ch-ua-platform: WindowsUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0sec-ch-ua: Not;ABrand;v8, Chromium;v150, Microsoft Edge;v150Content-Type: text/plain;charsetUTF-8sec-ch-ua-mobile: ?0Accept: */*Origin: https://image.baidu.comSec-Fetch-Site: same-siteSec-Fetch-Mode: corsSec-Fetch-Dest: emptyReferer: https://image.baidu.com/Accept-Encoding: gzip, deflate, br, zstdAccept-Language: zh-CN,zh;q0.9,en;q0.8,en-GB;q0.7,en-US;q0.6Cookie: BAIDUID1234567896824AC0977CC218FB359726F:FG1;……报头中有几个关键的字段字段之间换行区分1Host表示服务器主机的地址和端口可能被省略2Content-Length表示正文中的数据长度3Content-Type正文中的数据类型Content-Type: text/plain;charsetUTF-8格式为类型/子类型multipart/form-dataapplication/jsontext/htmlimage/png……4User-Agent(UA)表示浏览器操作系统的属性可以被人为地篡改服务器不能通过UA判断客户端的真实信息User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36Edg/150.0.0.0Mozilla/5.0 -- 兼容老旧网页Windows NT 10.0; Win64; x64 -- 操作系统信息AppleWebKit/537.36 (KHTML, like Gecko) -- 浏览器内核Edg/150.0.0.0 -- 本次访问的浏览器(在UA末尾出现)Chrome/150.0.0.0 Safari/537.36 -- Edge浏览器是基于Chrome的内核上开发的所以会保留Chrome的版本号Safari/537.36是一个兼容标记比如Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/150.0.0.0 Safari/537.36本次访问的浏览器是谷歌Mozilla/5.0 (Linux; Android 14) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/150.0.0.0Mobile Safari/537.36本次访问的是移动端的谷歌5Referer(referrer)当前请求是从哪个界面跳转过来的6Cookiecookie请求报头中由服务器通过set cookie响应报头中下发保存在浏览器本地后续浏览器发起请求时自动会把cookie当中的信息发送给服务器储存的数据有时效。 cookie当中储存的是键值对键和值隔开对与对之间;隔开。这像是小区的门禁卡户主第一次进入小区需要登记注册信息这份信息物业的服务器会储存一份还有一份以门禁卡的形式分发给户主下次回家时刷门禁卡就可以开门不需要到门卫那儿排查核对。户主浏览器物业网站服务器户主第一次进小区浏览器首次访问网站物业登记户主所有信息存入系统服务端生成session物业发放门禁卡服务器通过响应头set cookie下发cookie给浏览器 cookie不会储存所有信息只储存一段编号sessionId这个编号与session对应在门禁卡的有效期内出示门禁卡进出小区服务器读取cookie当中的sessionId到对应的session数据空行隔开报头和正文正文传输的数据HTTP格式简略图为HTTP的响应响应也分为四个部分响应行、响应报头、空行、响应正文HTTP/1.1 301 Moved PermanentlyServer: nginxDate: Fri, 17 Jul 2026 09:05:32 GMTContent-Type: text/htmlContent-Length: 178Connection: keep-aliveLocation: http://www.jd.com/……响应行响应行由三个部分组成版本、状态码、状态码的描述常见的状态码以及状态状态码的描述即使请求不合法但依然会有响应状态码表示的是访问一个页面的响应结果404状态码它表示访问的资源在服务器上不存在出错的地方在于客户端的请求首行当中的URL中的带层次的资源路径错误……重定向301/302 重定向访问URL1实际上访问的是URL2像是手机换了一个号码但为了交流方便办理了呼叫转移的业务当别人拨打旧号码时就会转接到我的新号码上。临时和永久的区别在于浏览器是否缓存新的地址。永久重定向当浏览器第一次访问时服务器响应301并附带location字段表示应该访问新的地址同时储存在本地浏览器当中第二次访问浏览器先查本地缓存若有就直接跳转到新的地址若没找到就判断是否是其他情况。临时重定向不会被浏览器缓存每次需要接收响应后跳转新的地址。无论是301还是302在首次访问时都需要至少两次的HTTP请求第一次请求访问旧地址第二次请求访问新地址总体顺序为用户输入URL时浏览器检索本地是否存在该URL的301跳转缓存记录如果存在直接跳转到新地址不会发送给服务器用于获取新地址。如果没有则发送请求在收到服务器的响应报文后读取状态码如果是重定向判断是永久还是临时临时的话不写入缓存永久的话把新地址存入到本地的跳转缓存中接着发起请求访问目标地址。状态码的总结1xx 信息状态码表示接收的请求正在处理2xx 成功状态码表示请求正常处理完毕3xx 重定向状态码表示需要进行附加操作以完成请求4xx 客户端错误状态码表示服务器无法处理请求5xx 服务器错误状态码表示服务器请求出错HTTPSHTTPS HTTP SSL / TLCHTTP是明文传输数据容易被劫持、窃取、篡改。HTTPS是在HTTP的基础上加了加密安全层具有加密传输、身份认证、防篡改的功能加密加密明文--密文对称加密一个密钥既能加密也能解密非对称加密两个密钥一个用于加密一个用于解密其中一个公开出去称之为公钥另一个自己保存称之为私钥解密密文--明文密钥对称密钥非对称密钥对称加密通过一个密钥把明文加密成密文并且能通过这个密钥把密文解密成明文像密码本通过密码本将情报加密信息沟通时通信双方需要同一个密钥才能进行加解密密钥的传输过程存在风险线下传输太麻烦低效网络传输更方便管理和密钥分配但如果密钥是明文传输这会导致传输的信息很容易被解密这样加密就成了无用功。单纯的对称加密的核心痛点就是密钥传输的安全问题优点在于能加密大量数据也能更容易加密数据非对称加密非对称加密其中一把密钥公布出去用于加密另一把密钥自己持有用于解密这样沟通对方按照公钥进行加密别人无法知道其真正意思但自己可以通过私钥解密得知正文这样就形成了加密传输。但是单纯的非对称加密缺点在于加密速度慢对加密的明文长度有限制对称加密和非对称加密结合利用非对称加密当中的公钥对对称加密当中的对称密钥进行加密私钥持有方才能知道对称加密的密钥。这样沟通双方就可以使用对称加密进行加密交流。但是这样还是有一个缺点收到公钥的一方是否能够确定这个公钥来自于我想要进行加密沟通的对象。引入中间人攻击中间人劫持客户端的数据报文 并自己向服务器发送请求得到公钥a中间人在把自己的公钥b传给客户端让客户端误以为自己是服务器客户端再用公钥b加密对称密钥c再被中间人劫持使用私钥B解密得知对称密钥c再以公钥a传递给服务器让服务器能够通过私钥A解密让其误认为自己是客户端。这样对于客户端来说中间人是服务器对于服务器来说中间人是客户端要解决的新问题是怎样辨别公钥是我需要加密通讯的对象引入CA证书证书类似于网站的官方身份证证书包含域名网站的公钥CA机构的签名和有效期等等是一种身份证明证明证书当中的公钥是你加密通信对象的公钥。证书内存放网站的公钥 CA证书本身也有一套独立公钥和私钥与网站的公钥和私钥不同CA证书的公钥内置于操作系统当中CA证书CA私钥用于加密哈希摘要形成数字签名 CA公钥用于解密校验证书签名。 CA的公钥被作操作系统内置并非网络传输且CA公钥用于解密这样客户端就可以得知CA证书当中的签名,而CA私钥用于加密被严格保存。由于签名是由正文进行哈希摘要在进行CA私钥加密得来用证书当中的签名解密后和本身的哈希摘要进行比较如果相同这证明证书是对的引入HTTPS的工作流程1,客户端与服务器完成TCP连接发起TLS握手服务器发放证书2客户端使用系统内置的CA公钥校验证书签名确认证书的有效3校验完成后客户端随机生成对称密钥4客户端使用证书内的网站公钥加密对称密钥发送给服务器5服务器使用本地的网站私钥解密得到同一个对称密钥6双方后续所有的HTTP通信均使用该对称密钥加密传输小结HTTPShttps用到两类加密对称加密和非对称加密非对称的有网站密钥对和CA的密钥对网站的密钥对私钥解密服务器保存公钥加密存放于数字证书中CA证书密钥对私钥加密做数字签名公钥解密操作系统内置并非网络传输获得校验证书

相关新闻

数字化:钱不可能让你赚完 敢放弃才能赢

数字化:钱不可能让你赚完 敢放弃才能赢

上周跟一个做了七八年数字化的老哥吃饭,他说了一句话把我逗乐了:"你们公司现在做数据呈现挺稳的,为什么不往上走走?数据采集、数据中台那块的利润多厚啊。"我笑了,反问他:"你觉得我现在缺的…

2026/10/18 4:52:27 阅读更多 →
Cursor连接数据库突然失败?揭秘Connection Timeout背后的4层协议栈真相(含Wireshark抓包验证)

Cursor连接数据库突然失败?揭秘Connection Timeout背后的4层协议栈真相(含Wireshark抓包验证)

更多请点击: https://intelliparadigm.com 第一章:Cursor连接数据库突然失败?揭秘Connection Timeout背后的4层协议栈真相(含Wireshark抓包验证) 当Cursor IDE在执行SQL查询时突然抛出 connection timeout after 300…

2026/10/19 3:16:19 阅读更多 →
IX9104@ACP# 完整替代的 PEX89104 应用场景

IX9104@ACP# 完整替代的 PEX89104 应用场景

一、IX9104 在当前国产 AI 服务器时代的独有特殊价值结合此芯 P1、爱芯 NPU、昇腾、昆仑等国产算力生态,区别于博通 PEX89104 的差异化核心价值:1. 信创合规 硬件国密,AI 政企算力项目准入刚需1)内置硬件 SM2/SM3/SM4 国密加密引…

2026/10/17 0:57:33 阅读更多 →

最新新闻

Flutter工程规范实战:用Claude Code和Codex约束AI写代码

Flutter工程规范实战:用Claude Code和Codex约束AI写代码

最近我在几个 Flutter 项目里试了用 Claude Code 和 Codex 来写代码,效果确实惊艳,但翻车概率也一点都不低。最典型的情况是:AI 能独立完成一个小功能,却会在你根本没注意到的地方破坏既有约定——混用状态管理方案、跳过异常处理…

2026/10/19 3:17:05 阅读更多 →
YOLOv8基建裂缝检测系统:轻量高鲁棒的工程落地实践

YOLOv8基建裂缝检测系统:轻量高鲁棒的工程落地实践

1. 项目概述:为什么一个“基建裂缝检测系统”值得用YOLOv8重做一遍你可能已经见过不少用YOLO系列做裂缝识别的Demo——拍张照片,框出几条灰白细线,再打个“裂缝:0.87”的标签,就叫“智能巡检”。但真把它拉进某高铁桥墩…

2026/10/19 3:17:05 阅读更多 →
基于Python与深度学习的植物病虫害识别系统设计与实现

基于Python与深度学习的植物病虫害识别系统设计与实现

1. 项目整体设计与技术选型植物病虫害识别这几年一直是农业信息化里的热门方向,真正落地做过的朋友都知道,难点不在模型本身,而是“识别”这个动作如何被最终用户方便地使用。我这次做的这套基于Python的植物病虫害识别系统,目标很…

2026/10/19 3:17:05 阅读更多 →
基于Python的植物病虫害识别系统实战:从模型训练到前后端部署

基于Python的植物病虫害识别系统实战:从模型训练到前后端部署

1. 项目价值与整体定位看到“基于Python的植物病虫害识别系统”这个标题时,我第一反应是这应该是一个典型的“算法工程”相结合的综合型项目。它既要解决“能不能识别出来”的算法问题,又要解决“别人怎么用”的工程落地问题。前后端源码意味着它不仅仅是…

2026/10/19 3:17:05 阅读更多 →
二进制部署Kubernetes高可用:从单master到双master+双LB实践

二进制部署Kubernetes高可用:从单master到双master+双LB实践

做二进制方式部署 Kubernetes 的人,多少带点“倔”——不想被 kubeadm 那堆自动生成的证书和静态 Pod 挡住视线,就想亲手把 etcd、apiserver、controller-manager、scheduler 一个个进程拉起来,看它们到底是怎么协作的。我前阵子刚把一套“单…

2026/10/19 3:17:05 阅读更多 →
Metadef实践指南:CANN自定义算子开发的基石

Metadef实践指南:CANN自定义算子开发的基石

Metadef 这个名字在自定义算子开发圈子里,说实话一开始很容易被忽略。很多人刚接触 CANN 算子开发时,目光全放在 kernel 怎么实现、tiling 怎么切分上,等真正动手写第一个算子才发现,最卡脖子的不是计算逻辑,而是“这个…

2026/10/19 3:16:05 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →