Web套接字协议握手与交换协议

时间:2014-03-14 16:39:09

标签: http websocket http-headers

我有点困惑。有人可以向我解释这两种反应状态之间的区别是什么:

HTTP/1.1 101 Web Socket Protocol Handshake

HTTP/1.1 101 Switching Protocols

我得到的回应是否重要?

1 个答案:

答案 0 :(得分:21)

没有任何区别。重要的是101响应代码,表明握手正在进行中。这在RFC 6455

中定义
  

来自客户端的主要行遵循请求行格式。 来自服务器的引导线遵循状态行格式。 Request-Line和Status-Line产品在[RFC2616]中定义。

     

...

     

来自服务器的握手比客户端握手简单得多。 第一行是HTTP状态行,状态代码为101:

     

HTTP / 1.1 101交换协议

     

除101之外的任何状态代码表示WebSocket握手尚未完成,并且HTTP的语义仍然适用。

Status-Line的文字是任意的,服务器可以按照RFC 2616使用它想要的任何文字:

  

Status-Line = HTTP-Version SP状态代码SP 原因 - 短语 CRLF

     

...

     

Status-Code元素是尝试理解和满足请求的3位整数结果代码。这些代码在第10节中完全定义。原因 - 短语旨在提供状态代码的简短文本描述。 Status-Code旨在供自动机使用, Reason-Phrase适用于人类用户。客户无需检查或显示Reason-Phrase。

Switching Protocols恰好是RFC 6455中使用的示例,但这不是必需的。