一、HTTP协议
状态码
用于响应中的 (表示响应的结果如何)
HTTP中的状态码都是标准约定好的
几个常见的状态码:
- 200 OK
表示OK,一切顺利
- 404 Not Found
访问资源没找到
- 403 Forbidden
请求资源没有权限访问.
- 405 Method Not Allowed
你的服务器只支持GET请求,但是你发了个POST请求
- 500 Internal Server Error
服务器内部错误(服务器挂了)
- 504 Gateway Timeout
访问服务器超时了
可能是服务器挂了,也可能是网挂了
- 302 Move temporarily 重定向
访问网页A,结果跳转到网页B
301 永久重定向
302 临时重定向
如果是永久重定向,浏览器就会把结果记录下来,下次访问就直接访问目标地址,不用多转跳一次.
在这种重定向的报文的响应中,会有一个特殊的header叫做location,就描述了要重定向到的目标地址,是在哪里.
状态码中还有一个特殊的418,无含义,彩蛋.
如何构造出HTTP请求
-
通过代码构造
-
通过第三方工具构造
PostMan 经典的广泛使用的工具
二、HTTPS协议
HTTPS是在HTTP的基础上,引入了一个加密层(SSL)
HTTP是明文传输(不安全),解决安全问题,最核心的要点就是 " 加密 "
明文=>密文 加密
密文=>明文 解密
加密的过程,需要一个关键的道具,称为密钥.
对称加密:加密和解密使用的是同一个密钥
非对称加密:加密和解密使用的是两个密钥,一个用来加密,另一个就用来解密.
两个密钥,就可以一个公示出去,称为 " 公钥 ",另一个自己保存好,称为 " 私钥 ".
HTTPS工作过程
只要针对HTTPS的数据进行解密了,就能够得到HTTP格式的数据.
需要引入加密,对上述传输的数据进行保护.主要就是针对header和body进行加密.
1.引入对称加密
通过对称加密的方式,针对传输的数据进行加密操作.
(1) 对称加密的时候,客户端和服务器需要使用同一个密钥.
(2) 不同的客户端,需要使用不同的密钥(如果所有的客户端密钥都相同,加密就形同虚设)
也就意味着,每个客户端连接到服务器的时候,都需要自己生成一个随机的密钥,并且把这个密钥告知服务器,(服务器生成的也行,需要告知给服务器)
但是,密钥传输给了对方,要是被黑客窃取了,就意味着加密操作没有用了.
- 引入非对称加密
使用非对称加密.主要的目的就是为了对对称密钥进行加密,确保对称密钥的安全性.
不能使用非对称加密,针对后续传输的各种 header body 等进行加密,而是只能使用非对称加密去加密对称密钥.非对称加密的加密解密成本要远远高于对称加密.
非对称加密的过程:
服务器生成一对非对称密钥,私钥服务器自己持有,公钥可以告知任何的客户端.
客户端在连上服务器之后,就需要先从服务器这边拿到公钥,客户端生成对称密钥,拿着公钥针对对称密钥进行加密.
此时就可以把加密之后的密文进行传输了.由于想要解密,必须通过私钥,而私钥只有服务器自己知道,此时这样的加密的数据就可以比较安全的到达服务器了.
服务器通过私钥解密之后得到了对称密钥,接下来和客户端之间的通信就通过对称加密来完成了.
证书
但是这样子,还是有风险的,黑客可以创建出自己的私钥和公钥,冒充自己是服务器.
要解决这个问题,就需要用到 " 证书 "
证书是一个结构化的数据,证书会包含一系列的信息.
证书是搭建服务器的人.要从第三方公证机构申请的.
客户端拿到数据之后,会对证书验证真伪.
客户端拿到证书之后,主要做两件事:
-
按照同样的校验和算法,把证书的其他字段都重新计算一遍,得到 校验和1
-
使用系统中内置的公证机构公钥,对证书中的签名进行解密,得到 校验和2
此时就可以对比两个校验和是否一致,从而得知证书是否被修改过,即数据是否有问题.