当前位置:  开发笔记 > 运维 > 正文

HTTP 1.0与1.1

如何解决《HTTP1.0与1.1》经验,为你挑选了5个好方法。

有人能简单介绍一下HTTP 1.0和HTTP 1.1之间的区别吗?我花了一些时间与两个RFC,但未能在它们之间拉出很多差异.维基百科说:

HTTP/1.1(1997-1999)

当前版本; 默认情况下启用持久连接,并且与代理一起使用.还支持请求流水线操作,允许同时发送多个请求,允许服务器为工作负载做准备,并可能更快地将请求的资源传输到客户端.

但这对我来说并不意味着很多.我意识到这是一个有点复杂的主题,所以我不期待一个完整的答案,但有人可以给我一个较低层次的差异的简要概述吗?
我的意思是,我正在寻找实现HTTP服务器或应用程序所需的信息.我主要是想在正确的方向上轻推一下,这样我就可以自己搞清楚了.



1> Brian R. Bon..:

代理支持和主机字段:

HTTP 1.1按规范具有所需的主机头.

HTTP 1.0并不正式需要Host头,但添加一个并没有什么坏处,并且许多应用程序(代理)都希望看到Host头,而不管协议版本如何.

例:

GET / HTTP/1.1
Host: www.blahblahblahblah.com

此标头很有用,因为它允许您通过代理服务器路由邮件,还因为您的Web服务器可以区分同一服务器上的不同站点.

所以这意味着如果你有blahblahlbah.com和helohelohelo.com都指向相同的IP.您的Web服务器可以使用"主机"字段来区分客户端计算机所需的站点.

持久连接:

HTTP 1.1还允许您拥有持久连接,这意味着您可以在同一HTTP连接上拥有多个请求/响应.

在HTTP 1.0中,您必须为每个请求/响应对打开一个新连接.在每次响应之后,连接将被关闭.由于TCP慢启动,这会导致一些大的效率问题.

选项方法:

HTTP/1.1引入了OPTIONS方法.HTTP客户端可以使用此方法来确定HTTP服务器的功能.它主要用于Web应用程序中的跨源资源共享.

缓存:

HTTP 1.0支持通过标头进行缓存:If-Modified-Since.

HTTP 1.1通过使用称为"实体标记"的东西大量扩展了缓存支持.如果2个资源相同,那么它们将具有相同的实体标记.

HTTP 1.1还添加了If-Unmodified-Since,If-Match,If-None-Match条件头.

还有一些与缓存相关的新增功能,如Cache-Control标头.

100继续状态:

HTTP/1.1 100中有一个新的返回码.这是为了防止客户端在客户端甚至不确定服务器是否可以处理请求或是否有权处理请求时发送大量请求.在这种情况下,客户端仅发送标题,服务器将告诉客户端100继续,继续正文.

多得多:

摘要式身份验证和代理身份验证

额外的新状态代码

分块传输编码

连接头

增强的压缩支持

更多.


请注意,如果省略Host标头,许多声称他们想要HTTP/1.0的服务器/代理将会非常沮丧.
HTTP 1.0确实支持通过Content-Encoding标头进行压缩.正如Paul所提到的,我肯定会建议任何HTTP/1.0客户端发送Host头,因为严格禁止这样做,事情往往会像你期望的那样工作.否则,这已经死了.
关于"如果你有blahblahlbah.com和helohelohelo.com都指向相同的IP.你的网络服务器可以使用主机字段来区分客户端机器想要的站点." 那么当HTTP 1.0客户端给我们没有主机字段来区分时会发生什么?

2> 小智..:

HTTP1.0(1994)

它仍在使用中

可以由无法处理分块(或压缩)服务器回复的客户端使用

HTTP1.1(1996-2015)

将许多扩展形式化为1.0版

支持持久和流水线连接

支持分块传输,压缩/解压缩

支持虚拟主机(具有托管多个域的单个IP地址的服务器)

支持多种语言

支持字节范围传输; 对于恢复中断的数据传输很有用

HTTP 1.1是HTTP 1.0的增强.以下列出了四项主要改进:

    通过允许从单个IP地址提供多个域来有效使用IP地址.

    通过允许Web浏览器通过单个持久连接发送多个请求,可以更快地响应.

    通过支持分块编码,可以更快地响应动态生成的页面,从而允许在知道总长度之前发送响应.

    通过添加缓存支持,可以更快地响应并节省大量带宽.



3> Diomidis Spi..:

对于简单的应用程序(例如偶尔从支持Web的温度计检索温度值),HTTP 1.0对客户端和服务器都很好.您可以在大约20行代码中编写基于套接字的基本HTTP 1.0客户端或服务器.

对于更复杂的场景,HTTP 1.1是可行的方法.期望代码大小增加3到5倍,以处理更复杂的HTTP 1.1协议的复杂性.复杂性主要来自,因为在HTTP 1.1中,您将需要创建,解析和响应各种标头.通过让客户端使用HTTP库或服务器使用Web应用程序服务器,您可以保护应用程序免受此复杂性的影响.



4> Troy J. Farr..:

密钥兼容性问题是对持久连接的支持.我最近在一个"支持"HTTP/1.1的服务器上工作,但在客户端发送HTTP/1.0请求时却无法关闭连接.编写支持HTTP/1.1的服务器时,请确保它也适用于仅支持HTTP/1.0的客户端.


HTTP/1.1是否要求我们兼容HTTP/1.0?

5> Leandro Lópe..:

我可以从头脑中回忆起的第一个差异之一是在同一服务器中运行的多个域,部分资源检索,这允许您检索并加速资源的下载(这几乎是每个下载加速器所做的).

如果你想开发一个像网站或类似的应用程序,你不需要太担心差异,但你应该至少知道GETPOST动词之间的区别.

现在,如果您想开发浏览器,那么您必须知道完整的协议以及您是否正在尝试开发HTTP服务器.

如果您只对了解HTTP协议感兴趣,我建议您从HTTP/1.1而不是1.0开始.

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有