http常见状态码
| 状态码 | 含义 |
|---|---|
100 | 接受的请求正在处理,请继续发送请求 |
102 | 提升http的协议等级 |
200 | 服务器已经成功的处理了请求 |
202 | 服务器接受到了请求,但是还没有处理完 |
301 | 永久性重定向,资源已经被分配到了新的URL地址 |
302 | 临时重定向,资源临时被分配到了新的URL |
303 | 资源存在另外一个URL,用GET方法获取资源 |
304 | 表示可以使用以前请求的结果,不需要再次请求,协商缓存 |
400 | 语法无效,服务器无法理解该请求 |
401 | 请求未经授权,一般需要token校验 |
403 | 表示服务器能够处理该请求但是拒绝访问 |
404 | 请求资源不存在 |
405 | 请求方式错误 |
500 | 服务器内部错误 |
502 | 网关错误 |
503 | 服务器不能处理该请求 |
504 | 无法在规定时间内获取响应 |
http中如何实现缓存机制
http中的缓存机制分为两种,分别为
协商缓存、强制缓存
- 强制缓存,再次请求时无需向服务器发送请求 与之相关的Response Headers有以下几个
- Expires 使用绝对时间,且有固定格式限制
- Cache-Control
- no-cache,每次请求需要校验服务器的新鲜度,即使用
协商缓存 - max-age ,浏览器在多久之内都不需要向服务器请求资源
- no-cache,每次请求需要校验服务器的新鲜度,即使用
- 协商缓存
再次请求时,需要向服务器校验新鲜度,如果是新鲜的,返回304,从浏览器获取资源 与之相关的Response Headers有以下几个
- Last-Modified / If-Modified-Since, 在第一次请求的时候,告诉浏览器该资源的
最后一次修改时间,在下次请求的时候,在If-Modified-Since字段上带上该时间,服务器端拿到该时间去比较,如果一致,则返回304,如果不一致,则返回新的数据 - Etag / If-None-Match, 服务器响应请求时,通过此字段(
Etag)告诉浏览器当前资源在服务器生成的唯一标识(生成规则由服务器决定),然后请求时将该字段通过If-None-Match传递进行比较,如果一致,则返回304,如果不一致,则返回新的数据
缓存的优点
- 减少了冗余的数据传递,节省宽带流量
- 减少了服务器的负担,大大提高了网站性能
- 加快了客户端加载网页的速度
- 这也正是HTTP缓存属于客户端缓存的原因
http和htts的区别
http存在的问题:
- 请求信息明文传输,容易被窃听截取
- 数据的完整性未校验,容易被篡改
- 没有验证对方身份,存在冒充危险
HTTPS 协议解释:
HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):一般理解为HTTP+SSL/TLS,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。
默认端口不同,http:80,https:443
https如何保证证书是可信赖的?如何进行身份认证的?
校验证书是否是可依赖的
- 当用户访问站点的时候,浏览器会向服务器请求SSL/TLS证书
- 浏览器会先校验证书是否可靠,
验证证书颁发机构:浏览器将检查证书是否由受信任的证书颁发机构(CA)签发,以及证书链中的所有证书是否都是有效的。 检查证书是否过期:浏览器会检查证书的有效期,确保证书没有过期验证该证书是否适用于当前域名:浏览器将检查证书中包含的主题名称字段,在证书表示的域名与用户正在访问的域名是否匹配。检查证书的公钥是否有效:浏览器会验证证书中包含的公钥,以确保它们可以安全地将数据传输给服务器。防止虚假证书攻击:浏览器还会检查是否存在被劫持或伪造的证书。如果证书出现问题,浏览器将向用户发出警告,防止用户继续与不安全的站点进行通信。- 当所有步骤都通过后,浏览器将显示一个安全锁表示连接是私密且安全的。这意味着网站已经成功地通过身份验证,并且用户可以安全地传输数据。如果证书验证失败,浏览器将向用户发出警告,提示用户潜在的安全风险,并建议用户不要继续与该站点进行通信。
如何进行身份校验的
graph TD
1.浏览器请求站点的TLS/SSL证书 --> 2.服务器响应并返回数字证书,服务器内部存在有公钥和私钥 --> 3.浏览器使用公钥结合SSL证书的算法,生成一个随机码,随机码再加上公钥进行加密 --> 4.发送请求给服务器,服务器用私钥去解密数据获得生成的随机码 --> 5.浏览器中再通过生成的随机码来加密数据,服务器中通过解密的随机码来解密数据
在这里面,通过使用公钥结合SSL证书算法生成随机数,然后随机数加上公钥进行加密,发送密文到服务器,服务器使用私钥来解密随机数密文的方式进行身份校验