作者:MC_炽焰 | 来源:互联网 | 2022-11-28 12:30
我试图了解https和http / 2之间的区别是什么?
如果我要构建node.js / express应用,我应该使用什么?
我可以将https与http / 2一起使用吗?
也许如果我使用https,则不需要http / 2,因为它是相同的,或者https在后台使用http / 2?
我糊涂了。
有人链接到我“ HTTP 1.1和HTTP 2.0之间的差异[关闭]”,但我了解HTTP和HTTP2之间的差异。我在问HTTP S和HTTP / 2
1> Barry Pollar..:
HTTP-客户端(例如Web浏览器)用来从服务器(例如Web服务器)请求资源的协议。
HTTPS-一种加密HTTP的方式。它基本上使用SSL / TLS将HTTP消息包装为加密格式。当网站通过未加密的HTTP提供服务时,Web越来越趋向于HTTPS,并且Web浏览器开始发出越来越多的警告。除非您有很好的理由不这样做,否则请在您现在创建的任何网站上使用HTTPS。
深入研究HTTP,我们有:
HTTP / 1.1-这是HTTP的流行格式,直到最近。这是一个基于文本的协议,并且效率低下-尤其是在请求大量资源(例如典型的网页)时。HTTP / 1.1消息可以不加密(网站地址以http://开头),也可以使用HTTPS加密(网站地址以https://开头)。客户端使用URL的开头来决定要使用的协议,如果未提供,通常默认为http://。
HTTP / 2 -2015年发布的HTTP的新版本,通过从基于文本的协议转移到明确定义每个字节的二进制协议,解决了一些性能问题。对于客户端和服务器而言,这更容易解析,为错误留出了更少的空间,还允许多路复用。HTTP / 2与HTTP / 1.1一样,可通过未加密(http://)和加密(https://)通道使用,但是Web浏览器仅通过HTTPS支持它,在HTTPS上决定使用HTTP / 1.1还是HTTP / 2在连接开始时作为HTTPS协商的一部分。
在撰写本文时,约有三分之一的网站使用HTTP / 2。但是,并非所有客户端都支持HTTP / 2,因此您应该尽可能支持HTTPS上的HTTP / 1.1和HTTPS上的HTTP / 2(我相信节点在使用http模块时会自动为您执行此操作)。我认为HTTP / 1.1不会在不久的将来淘汰。您还应该考虑通过未加密的HTTP支持HTTP / 1.1,然后重定向到HTTPS版本(然后将视情况使用HTTP / 1.1或HTTP / 2)。Node前面的Web服务器(如Apache或Nginx)使此操作变得容易。
HTTP / 3 - HTTP的下一版本,目前正在开发中。它可能会在2019年完成,但可能要到2020年才能在Web服务器和节点等语言中看到。它将建立在称为QUIC的基于UDP的传输之上(而不是HTTP / 1.1和HTTP / 2所基于的基于TCP的协议)。它将在协议中包括HTTPS的一部分,因此HTTP / 3仅可通过HTTPS使用。
简而言之,您应该在HTTPS上使用HTTP / 1.1,如果易于实现的话,也应该考虑HTTP / 2(并非总是可能,因为它尚不普遍,但是到那里为止),将来您可能会使用HTTP / 3。
如果您要进行Web开发,我建议您对所有这些技术有一个深刻的了解(也许还没有HTTP / 3)。它会很好地支持您。