当前位置:主页 > 查看内容

http、https以及状态码超全详解

发布时间:2021-04-16 00:00| 位朋友查看

简介:文章目录 HTTP 概念 作用 http 请求 http 头部 http 连接 各版本的区别 http1.0 http1.1 http2.0 http3.0 HTTPS 概念 作用 工作原理 优点 缺点 http 和 https 区别 http 状态码 重定向 什么是重定向 什么时候会重定向 301 和 302 为什么尽量使用 301 如何解……


HTTP

概念

超文本传输协议(Hyper Text Transfer Protocol),是客户端和服务器端请求和应答的标准(TCP),属于应用层。http 的生命周期通过 Request 来界定,也就是 Request 一个 Response(可发送多个Request,接收多个Response,但Request和Response是一对一关系)。

作用

从WWW 服务器传输超文本到本地浏览器的传输协议,使浏览器更加高效,使网络传输减少。

http 请求

GET、POST、HEAD、OPTIONS、PUT、DELETE、TRACE、CONNECT

http 头部

通用头(通用信息),请求头,响应头,实体头(描述实体)

http 连接

实质上是TCP协议的长连接和短连接。
短连接: http1.0 默认使用短连接,即每次请求都要重新发起连接,数据交换结束即关闭连接。
长连接: 从 http1.1 起默认使用长连接,连接建立后不断开,然后再进行数据发送和接收,客户端和服务器之间用于传输数据的 TCP 连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。

各版本的区别

http1.0

1、默认使用短连接。
2、使用 If-Modified-Since,Expires来做缓存判断的标准。
3、存在带宽浪费现象,比如客户端仅需要对象的一部分,而服务端则将整个对象送来。

http1.1

1、默认使用长连接。
2、引入更多的缓存判断标准:Etag、If-None-Match等。
3、允许请求资源的某个部分。
4、新增了24个状态码。

http2.0

1、允许多路复用,做到同一个连接并发处理多个请求。
2、支持二进制编码。
3、将相同的首部进行压缩,不重复传输。
4、支持服务器端推送(CSS和JS一起发送),不仅只是客户端发起请求,服务端可以自己发送一些数据。

http3.0

1、QUIC (Quick UDP Internet Connections)是基于UDP协议的。
2、解决了 TCP 的队头阻塞问题(某一个流的数据有丢包,则同样会阻塞在它之后传输的流数据传输)。而 http3.0 中不同的流之间真正的实现相互独立传输,互不干扰。
3、在切换网络时的依旧保持连接。

HTTPS

概念

在 http 下加入 SSL/TSL 层,安全基础是 SSL,加密的详细内容需要 SSL。【https的SSL加密是在传输层实现的】

作用

建立一个信息安全通道,确保数据的传输和网站的真实性。

工作原理

https过程

1、客户使用 https url 访问服务器,建立 SSL 连接。
2、服务器接收到请求后,会将包含公钥的证书返回给客户端。
3、客户端和服务端协商 SSL 连接的安全等级,即加密等级。
4、客户端浏览器通过安全等级建立会话密钥,通过公钥加密会话密钥并传送给服务端。
5、服务器通过自己的私钥解密出会话密钥,与客户端之间建立通信。

  • 非对称加密:RSA、DSA
  • 对称加密:AES、RC4
  • HASH加密:MD5、SHA1

优点

1、可以认证用户和服务器,确保数据发送正确。
2、比 http 协议安全,确保数据的完整性。
3、现行架构下最安全的解决方案,增加了攻击成本。

缺点

1、https 握手阶段费时,页面加载时间延长。
2、https 缓存不如 http 高效,增加数据开销。
3、SSL 证书消耗成本,功能越强大的证书费用越高。

http 和 https 区别

区别
1、http 未加密,传输内容都是明文;https 则加密传输,安全性更高。
2、https 协议需要ca证书,费用较高。
3、http 的端口为80;https 的端口为443。
4、http 的连接是无状态的(其数据包的发送、传输和接收都是相互独立的);https 的连接是有状态的。

http 状态码

状态码类别原因
1xxInformation(信息性)接收的请求正在处理
2xxSuccess(成功)请求正常处理完毕
3xxRedirection(重定向)需要进行附加操作以完成请求
4xxClient Error(客户端错误)服务器无法处理请求
5xxServer Error(服务端错误)服务器处理请求出错
状态码解释
100服务器收到了请求, 请客户端继续发送
200请求成功,一般用于 GET 与 POST 请求
201成功请求并创建了新的资源
202已经接受请求,但未处理完成
203非授权信息
204服务器成功处理,但未返回内容
301请求的资源已被永久的移动到新URL,返回信息会包括新的URL
302资源临时被移动,客户端应继续使用原有URL
303使用GET和POST请求查看其它地址
304请求已被允许,但文档的内容并没有改变
305所请求的资源必须通过代理访问
307使用GET请求重定向
400请求无效,前端数据与后端不一致
401当前请求需要用户验证
403服务器已经得到请求,但是拒绝执行
404服务器无法根据客户端的请求找到资源(网页)
405客户端请求中的方法被禁止
408服务器等待客户端发送的请求时间过长,超时
410客户端请求的资源已经不存在
413由于请求的实体过大,服务器无法处理,因此拒绝请求
414请求的URL过长
415服务器无法处理请求附带的媒体格式
416客户端请求的范围无效
500服务器内部错误,无法完成请求
501服务器不支持请求的功能,无法完成请求
503由于超载或系统维护,服务器暂时的无法处理客户端的请求
505服务器不支持请求的HTTP协议的版本

重定向

什么是重定向?

从一个地址跳转到另一个地址。

什么时候会重定向?

1、网站调整(如改变网页目录结构)
2、网页被移到一个新地址
3、网页扩展名改变

301 和 302

301 是指请求的资源已被永久的移动到新URL,返回信息会包括新的URL;而 302 是指资源临时被移动,客户端应继续使用原有的URL。

为什么尽量使用 301?

因为网址劫持,比如使用 302 跳转时,网址会临时定位到另一个网址,搜索引擎的结果所显示的仍然是网址A,但是所用的网页内容网址B上的内容,这就是网址劫持。而 301 跳转则抛弃了旧网址,永久转移到新的网址。

如何解决 304 问题?

304 是指请求已被允许,但文档的内容并没有改变。出现 304 是因为先在本地缓存了访问的资源
解决: 强制刷新、禁用缓存

参考文章:https://www.jianshu.com/p/995a3000f7d6?isappinstalled=0https://blog.csdn.net/glpghz/article/details/106063833

;原文链接:https://blog.csdn.net/qq_38713274/article/details/115419976
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐