HTTP状态码之101

 

 


定义
HTTP 101 Switching Protocol(协议切换)状态码表示服务器应客户端升级协议的请求对协议进行切换。

实现协议切换的原理

 

 


Connection: Upgrade该Connection头被设置为"Upgrade"以表示的升级要求。Upgrade:
protocols

所述Upgrade标头指定的一个或多个以逗号分隔的协议名称。
检查服务器是否支持客户端所需要的协议。
- 服务器可拒绝升级-在这种情况下,它发送回一个普通。或接受升级,在这种情况下,它会发送一个"101 Switching Protocols"带有升级标头的指定所选协议的标头。
我们来看一个实际的例子:

 

 

 

应用场景
此机制始终由客户端发起,并且服务器可能接受或拒绝切换到新协议。客户端可使用常用的协议(如HTTP / 1.1)发起请求,请求说明需要切换到HTTP / 2或甚至到WebSocket。

websocket场景
为了实现WebSocket通信,首先需要客户端发起一次普通HTTP请求。也就是说,WebSocket的建立是依赖HTTP的。请求报文可能像下面这样:

GET ws://websocket.example.com/ HTTP/1.1
Host: websocket.example.com
Upgrade: websocket
Connection: Upgrade
Origin: http://example.com
Sec-WebSocket-Key:pAloKxsGSHtpIHrJdWLvzQ==
Sec-WebSocket-Version:13复制代码
其中HTTP头部字段Upgrade: websocket和Connection: Upgrade非常重要,告诉服务器通信协议将发生改变,转为WebSocket协议。支持WebSocket的服务器端在确认以上请求后,应返回状态码为101 Switching Protocols的响应:

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: nRu4KAPUPjjWYrnzxDVeqOxCvlM=复制代码
其中字段Sec-WebSocket-Accept是由服务器对前面客户端发送的Sec-WebSocket-Key进行确认和加密后的结果,相当于一次验证,以帮助客户端确信对方是真实可用的WebSocket服务器。

验证通过后,这个握手响应就确立了WebSocket连接,此后,服务器端就可以主动发信息给客户端了。此时的状态比较像服务器端和客户端接通了电话,无论是谁有什么信息想告诉对方,开口就好了。

一旦建立了WebSocket连接,此后的通信就不再使用HTTP了,改为使用WebSocket独立的数据帧。

整个过程像这样:

 

 

 


————————————————
转:https://blog.csdn.net/qq_21137441/article/details/122576173

posted @   rmticocean  阅读(2013)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示