Fil*_*tos 4 websocket internet-explorer-10
我确实在libevent中实现了一个websocket服务器,虽然我没有Chrome或Firefox的任何问题,使用IE10我甚至无法建立连接.
握手:
IE10 Request:
GET /echo HTTP/1.1
Origin: 95.115.195.4
Sec-WebSocket-Key: rgPWUlUtk+h3CPWqk99OtA==
Connection: Upgrade
Upgrade: Websocket
Sec-WebSocket-Version: 8
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)
Host: 95.115.195.4:5555
Cache-Control: no-cache
Server Response:
HTTP/1.1 101 Switching Protocols
Upgrade: Websocket
Connection: Upgrade
Sec-WebSocket-Accept: jGmgQ/jOvew8MU9o3bbqPG9PHlY=
Sec-WebSocket-Protocol: chat
Run Code Online (Sandbox Code Playgroud)
IE10调试器说:SCRIPT12152:WebSocket错误:HTTP响应不正确.状态代码101
谁知道我做错了什么?
谢谢
客户端没有发送子协议列表,但是您的服务器已经发送回"聊天"作为子协议值.根据IETF 6455 WebSocket规范第19页(4.1节客户端要求结束):
6. If the response includes a |Sec-WebSocket-Protocol| header field
and this header field indicates the use of a subprotocol that was
not present in the client's handshake (the server has indicated a
subprotocol not requested by the client), the client MUST _Fail
the WebSocket Connection_.
Run Code Online (Sandbox Code Playgroud)
如果客户端向服务器发送了"Sec-WebSocket-Protocol:SUBPROTOCOL,..."标头,则服务器应仅将"Sec-WebSocket-Protocol:SUBPROTOCOL"标头发送回客户端.请注意,客户端可以发送子协议列表,如果是,则服务器必须从列表中选择一个以进行响应.
Firefox和Chrome可能过于宽松而且不遵守当前版本的规范.