为什么HTTP Upgrade的时候,需要Connection: upgrade
💡
原文中文,约2100字,阅读约需5分钟。
📝
内容提要
HTTP Upgrade请求必须同时包含Connection: Upgrade和Upgrade头部,以确保代理正确处理请求并解决兼容性问题,从而实现WebSocket等协议的正确升级。
🎯
关键要点
-
HTTP Upgrade请求需要同时包含Connection: Upgrade和Upgrade头部,以确保代理正确处理请求。
-
Connection头部用于标识逐跳头部,表示哪些头部不应被代理原样传递给上游服务器。
-
如果只有Upgrade头部而没有Connection: Upgrade,代理会将其视为普通HTTP请求。
-
Connection: Upgrade表示Upgrade是一个逐跳字段,供代理使用,而Upgrade: websocket则是给最终处理请求的程序看的。
❓
延伸问答
HTTP Upgrade请求中为什么需要Connection: Upgrade头部?
HTTP Upgrade请求需要同时包含Connection: Upgrade和Upgrade头部,以确保代理正确处理请求,避免将其视为普通HTTP请求。
Connection头部的作用是什么?
Connection头部用于标识逐跳头部,指示哪些头部不应被代理原样传递给上游服务器。
如果没有Connection: Upgrade,代理会如何处理请求?
如果只有Upgrade头部而没有Connection: Upgrade,代理会将其视为普通HTTP请求,不会进行协议升级。
什么是逐跳头部?
逐跳头部是描述当前浏览器与直连服务器连接信息的头部,例如Connection和Keep-Alive等。
Upgrade头部和Connection头部有什么区别?
Connection: Upgrade是给代理看的,表示Upgrade是逐跳字段;而Upgrade: websocket是给最终处理请求的程序看的,表示想要升级到WebSocket协议。
HTTP/1.1中Connection头部的标准化有什么意义?
HTTP/1.1中标准化Connection头部,确保代理能够正确处理逐跳头部,避免兼容性问题。
➡️