HTTP升级机制的支持程度如何?

时间:2010-11-04 22:42:43

标签: http ssl

我一直在研究HTTP 1.1(RFC 2817)中的Upgrade头字段,并且碰巧阅读了HTTP的维基百科条目。那篇文章有以下声明:

  

“然而,浏览器对Upgrade头的支持几乎不存在,因此HTTPS仍然是建立安全HTTP连接的主要方法。”

我希望实现我的Web服务,以便它依赖于Upgrade头字段,以避免必须侦听两个套接字(一个用于HTTP,另一个用于HTTPS)。这个陈述,我无法验证任何其他地方,让我有点紧张。维基百科上面的陈述是否接近正确或是否是一个粗略的概括?

2 个答案:

答案 0 :(得分:2)

我实际上正在为维基百科页面研究这个问题并遇到了这个问题。我环顾四周,这是我所知道的浏览器支持情况:

  • Chromium支持升级标头,例如this bug
  • Firefox不支持“升级:TLS”,尽管an open bug from 2005,是2010年的最后评论。我猜他们不会很快添加它。
  • Internet Explorer 10+可能会执行,this article描述使用Upgrade连接到websocket服务器。 This commit message还暗示IE 10支持“Upgrade:websocket”。
  • Safari 6+支持升级(请参阅here)。

对于所有支持的浏览器,我只找到了“升级:websocket”用法的示例,没有人说升级到TLS会起作用。因此,总的答案是在生产应用程序中依赖它是有风险的。

服务器支持似乎更好;自2.1以来,Apache已经获得了“升级:TLS”支持。

答案 1 :(得分:0)

我更愿意将它全部放在http中,但目前的情况更多地倾向于服务器名称指示,因为它受到广泛支持。它也很难表明您希望客户端使用url进行升级。因此,如果目标是虚拟主机,则执行此操作的一种方法是TLS“服务器名称指示”。请参阅RFC 3546 http://www.ietf.org/rfc/rfc3546.txthttp://en.wikipedia.org/wiki/Server_Name_Indication