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.结语

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

相关推荐
揣一尾游鱼yu38 分钟前
Spring上(IOC)笔记
java·笔记·spring·ioc
荣码1 小时前
长上下文与大文档处理:200页PDF怎么喂给AI,我踩了4个坑
java·python
QXWZ_IA1 小时前
边坡监测预算有限时的建设顺序:虚拟基准站与成本账
网络·数据库
极限挑战哥1 小时前
共享电单车联营平台分账架构实践:二清合规与自动分账零人工方案
java·大数据·人工智能·微信小程序·架构·微信公众平台
皮皮林5511 小时前
比 VMware 更快,更轻的虚拟机,横空出世!
java
Thomas.Sir2 小时前
第13课:MyBatis-Plus整合SpringBoot4.x,分页、条件查询、逻辑删除实战
java·spring boot
meiying88382 小时前
多快递公司快递单号批量查询接口怎么对接?Python 聚合查询实现
java·大数据·python
古法安卓2 小时前
Android-GPU压测工具
android·java·android studio
SL_staff3 小时前
10人团队如何用轻量私有化文档平台实现知识复用提效?技术视角拆解B/S架构下的协作闭环
java·开源·全栈
释厄6233 小时前
同性线套娃律——圆面积必然=1+2+...+n 的求和·圆心不与 π 相关
java·人工智能·算法·1024程序员节