0

HTTP 1.1 RFC限制客户端在任何客户端和服务器之间使用两个以上的 TCP 连接。我想知道哪些Web 应用程序框架强制执行此限制。

问候

4

1 回答 1

2

HTTP 1.1 实现不是 Web 应用程序框架的功能,它是客户端或服务器 HTTP 代理的功能。换句话说,它在客户端由 Safari、Chrome、Firefox 和 Internet Explorer 实现,在服务器端由 Apache 或 IIS 实现 [*]。当然,还有更多的 HTTP 代理也实现了 HTTP 1.1。我只是列出最受欢迎的(如“我使用的”:-))。

据我所知,您链接到的那篇维基百科文章中列出的大多数 Web 应用程序框架至少应该在 Apache 和/或 IIS 之上愉快地运行,因此它们应该能够从 HTTP 1.1 中受益。但是,如果用户使用的浏览器不支持 HTTP 1.1,则 Apache 和 IIS 的默认配置将回退到 HTTP 1.0,并且在最常见的情况下,这将对您选择的 Web 应用程序框架透明地发生。

更新:您的问题应该被解释为(根据您的评论)“哪些 Web 应用程序框架仅支持 HTTP 1.1 作为传输协议”。

没有主要的 Web 服务框架仅通过 HTTP 1.1 强制执行端点配置或客户端调用。所有这些都允许应用程序代码(服务或客户端)选择传输。这有两个主要原因:

  1. 协议选择取决于实际服务的部署配置,因此它与使用的框架正交,很少由 Web 服务开发人员做出
  2. 框架将传输协议选择限制为 HTTP 1.1 意味着增加了采用障碍,这是任何框架作者都不希望的。

唯一可能强制执行特定 HTTP 版本的框架将是它们自己的 Web 服务器实现或主要 Web 服务器(通常是 Apache)的预配置部署的框架。但是,我不知道任何会仅强制执行 HTTP 1.1 的方法。如果有的话,他们只会强制执行 HTTP 1.0。

还有一个非常实际的原因通常会阻止对 Web 服务执行 HTTP 1.1 - 大多数部署预计将跨未知数量的中间网关(防火墙、缓存服务器、负载平衡器等)工作,这些网关可能支持也可能不支持 HTTP 1.1 ,因此 Web 服务客户端和 Web 服务端点之间的协议协商失败,没有对 HTTP 1.0 的回退支持。

[*] Well, technically, it's implemented by WinHTTP and WinInet on Windows platform and is just reused by the applications. And I am sure there's a common library that is reused on Linux as well (probably called libhttp.so or something like it, but don't quote me on that :-)).

于 2010-04-08T09:22:01.560 回答