HTTP(2)

一、HTTP

1.构造HTTP请求

1.为什么要构造HTTP请求?
  自己构造http请求,可以完全控制请求报文,不依赖浏览器的默认行为,用来测试服务器收到不同的请求后怎么响应。
  例如:发送请求参数为空、超长、特殊符号、中文,看服务器会不会崩溃、报错。
  少填某个必要选项,看服务器返回的错误提示。
2.构造http请求的方法:

1.通过form表单构造HTTP请求(写HTML)
2.通过Ajax构造HTTP请求(写JavaScript)
3.通过Java Socket构造HTTP请求(Java)
4.通过调用Java标准库的方法构造HTTP请求(Java)
5.通过postman构造HTTP请求

2.通过调用Java标准库的方法构造HTTP请求(Java)

new客户端

java 复制代码
HttpClient httpClient=HttpClient.newHttpClient();

工厂方法

上述new客户端的方法是调用静态 工厂方法。
静态工厂方法:在产品接口本身写静态方法,直接生成产品。不需要单独的工厂接口。

构造请求

java 复制代码
HttpRequest httpRequest=HttpRequest.newBuilder()
						.uri(URI.creat("https://www.baidu.com"))
						.GET()
						.header("User-Agent","122q")
						.build();
						

链式调用法:这几个方法返回的都是同一个HttpRequest对象

发送请求,接收响应

java 复制代码
HttpResponse httpResponse=httpClient.send(httpRequest,HttpResponse.BodyHandlers.ofString());

同步异步

上述send就是同步。
同步:发送请求后,当前线程卡在原地等结果。等不到结果就一直阻塞。
异步:发送请求后,立刻返回,线程不会卡住,马上执行后续代码。

2.手动测试构造HTTP请求

Postman构造HTTP请求

二、 HTTPS

1.明文

明文:传输的原始数据

2.密文

密文:加密后的数据

3.加密

把明文加密变为密文

4.解密

把密文解密得到明文

5.密钥

加密解密过程中,用到的一个特殊的数据。
密钥本质是一个二进制数据,在传输时会基于Base64编码为字符串。

6.对称加密

网络传输时,数据必须要进行加密传输。先引入了对称加密。
对称加密:客户端/服务器生成一个密钥,双方确认密钥之后,通信的加密解密都用这个密钥。
加密过程:

问题:如果路由器被黑客入侵,那么黑客获取到密钥,传输的数据就会被黑客获取!

所以我们要给密钥加密!
但是用一个对称密钥k1给另一个对称密钥k2加密,K1仍需要网络传输,K1一旦被窃听,整个加密体系崩溃,无法解决 密钥传递时的安全问题。
因此,引入了非对称加密!

7.非对称加密

1.加密过程

加密过程:

非对称加密就是把对称加密和非对称加密结合起来进行密文传输

2.为什么要把对称和非对称结合起来进行密文传输?

对称加密:传输效率高,占用的系统资源少;
非对称加密:传输效率低,占用的系统资源多。

所以在非对称加密得到对称密钥后,之后的传输使用对称传输。

8.非对称传输的漏洞-中间人攻击

客户端不知道对方是服务器还是黑客
服务器不知道对方是客户端还是黑客

这里的问题是对称密钥key已泄露!后续的密文传输全都失效!
所以,引入证书来解决中间人攻击问题!

9.证书

证书本质上是一个字符串(结构化数据)

1.证书的结构

证书由5部分组成:
1.服务器公钥
2.网站域名
3.CA(certificate authority证书颁发机构)机构名称
4.证书有效期
5.CA用CA自己的私钥做的数字签名

2.签名

签名的本质是一个"加密过的校验和".

CA有一对自己的私钥和公钥。

签名的构成:把证书的前四个部分通过计算得到一个校验和,

然后CA由自己的私钥,把校验和加密,就得到了签名。

10.引入证书解决中间人攻击问题

CA的pub和pri不会被中间人攻击
因为CA的pub不在网络传输,预先存在客户端的操作系统中;
CA的pri绝对不能泄露。

11.结语

"永远不要失去发芽的心"

相关推荐
别动我齐刘海2 分钟前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
code2cat1 小时前
Java进阶篇之AtomicLongFieldUpdater:把累计额度留在对象字段中
java·cas·并发编程
WeiXin_DZbishe1 小时前
基于springboot城市公交实时运营与调度系统-计算机毕设 附源码【课程设计】66173
java·vue.js·spring boot·后端·python·php·课程设计
泡茶喝茶写代码1 小时前
A股量化数据工程:从 REST 接口到策略信号(第 18 篇):放量缩量异动扫描
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
wewowilling2 小时前
认识微服务
java·运维·微服务·springcloud
代码什么用2 小时前
Java Web 7-10
java·servlet
蜗牛互联网4 小时前
GPT-6 与 Intelligent UI:从回答到可审计操作的产品迁移
java·人工智能·后端
深圳市快瞳科技有限公司4 小时前
宠物门禁端侧AI落地解析:画质检测、活体甄别与离线推理
网络
SL_staff4 小时前
运维救火实录:钉钉考勤API变更引发工资计算异常,我们用JVS-Logic可视化逻辑引擎实现分钟级热修复
java·mysql·全栈