首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果我在不打算升级到websocket连接的HTTP请求中包含"Upgrade“和"Connection”头,会发生什么情况?

在不打算升级到WebSocket连接的HTTP请求中包含"Upgrade"和"Connection"头时,通常会导致服务器忽略这两个头部字段,并将该请求视为普通的HTTP请求进行处理。这是因为"Upgrade"和"Connection"头部字段通常被用于在HTTP协议升级到WebSocket时进行握手和连接的升级。

具体情况取决于服务器的实现和配置。一般情况下,服务器会解析HTTP请求头部字段,根据字段的值来确定是否需要升级到WebSocket连接。如果请求中不包含"Upgrade"和"Connection"头,服务器会将其识别为普通的HTTP请求,并按照HTTP协议进行处理。

在没有升级到WebSocket连接的情况下,HTTP请求会继续按照HTTP协议的规范进行处理。服务器可能会执行相应的请求处理逻辑,如处理请求的URI、查询参数、请求体等,并返回相应的HTTP响应。

在这种情况下,常见的返回状态码可能是200(成功)、404(未找到)或其他适当的状态码,取决于请求的内容和服务器的处理逻辑。

需要注意的是,如果确实需要升级到WebSocket连接,那么请求中必须包含"Upgrade"和"Connection"头,并且符合WebSocket协议规范的要求。否则,服务器将无法正确处理该请求,并可能返回错误信息或拒绝连接。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Request Smuggling Via HTTP2 Cleartext

文章前言 HTTP请求走私的"复兴"导致了我们现代应用程序部署中的破坏性漏洞,通过边缘服务器验证走私的HTTP请求可能会导致严重后果,包括伪造的内部标头、访问内部管理端点以及各种特权升级机会 HTTP...走私研究中,他证明了当升级到WebSocket连接时,通过触发后端问题,代理将连接升级到TCP隧道时他可以保持与后端的流水线HTTP/1.1连接,这允许请求被走私,从而规避代理服务器的访问控制 尽管这种形式的请求走私不会导致套接字中毒...HTTP2的hop-by-hop header设置包含Base64编码的HTTP/2连接参数,根据规范仅允许在明文连接上进行h2c升级,并且不应转发HTTP2设置标头(RFC 7540第3.2.1节)...://backend:80 注意:Traefik在代理连接字符串上不包含HTTP-2-Settings,这可能会导致某些h2c实现上的攻击失败 支持h2c的后端服务器如何?...Upgrade和Connection标头,从而实现h2c的开箱即用: HAProxy Traefik Nuster 默认情况下,这些服务在代理传递过程中不会转发升级和连接标头,但可以以不安全的方式进行配置

1.1K10

跟我一起探索HTTP-协议升级机制

example/1, foo/2 根据之前的请求的协议,可能需要其他标头信息,例如:从 HTTP/1.1 升级到 WebSocket 允许配置有关 WebSocket 连接的标头详细信息,以及在连接时提供一定程度的安全性...在创建初始 HTTP/1.1 会话之后,你需要发送另一个 HTTP 标准请求来请求升级,但在标头中要带上 Upgrade 和 Connection,也就是: Connection: Upgrade Upgrade...除了 Upgrade 和 Connection 标头,其余的通常是可选的,或者由浏览器和服务器都会在交互过程中处理好。...允许在一个请求中使用多个 Sec-WebSocket-Extension 标头;结果跟在一个标头文件中包含了所有列出的扩展一样。...如果服务器确实支持请求的协议版本,则响应中不包含 Sec-WebSocket-Version 标头。

31020
  • 谈谈 HTTP2 的协议协商机制

    我在向大家介绍 HTTP/2 的过程中,有一些问题经常会被问到。例如要部署 HTTP/2 一定要先升级到 HTTPS 么?升级到 HTTP/2 之后,不支持 HTTP/2 的浏览器还能正常访问么?...Upgrade 头部字段列出所希望升级到的协议和版本,多个协议之间用英文逗号和空格(0x2C, 0x20)隔开。...下面是建立 WebSocket 连接的 HTTP 请求: GET ws://example.com/ HTTP/1.1Connection: UpgradeUpgrade: websocketOrigin...并不是所有 HTTP/2 客户端都支持 ALPN,理论上建立 TLS 连接后,依然可以再通过 HTTP Upgrade 进行协议升级,只是这样会额外引入一次往返。...对于自己实现的客户端和服务端,如果打算使用 HTTP/2 ClearText,由于 HTTP Upgrade 协商会增加一次往返,可以要求双方必须支持 HTTP/2,直接发送 HTTP/2 数据,不走协商

    2.6K20

    Nginx 作为 WebSockets 代理

    WebSocket 和HTTP协议不同,但是WebSocket中的握手和HTTP中的握手兼容,它使用HTTP中的Upgrade协议头将连接从HTTP升级到WebSocket。...一个WebSockets的应用程序会在客户端和服务端保持一个长时间工作的连接。用来将连接从HTTP升级到WebSocket的HTTP升级机制使用HTTP的Upgrade和Connection协议头。...一项挑战是WebSocket是一个hop-by-hop协议,所以,当代理服务器拦截到一个客户端发来的Upgrade请求时,它(指服务器)需要将它自己的Upgrade请求发送给后端服务器,也包括合适的请求头...为了使NGINX可以将来自客户端的Upgrade请求发送给后端服务器,Upgrade和Connection的头信息必须被显式的设置。...为了能使NGINX正确处理WebSocket, 只需正确地设置消息头来处理更新从http到WebSocket连接的Upgrade请求。

    1.2K10

    websocket

    TCP连接成功后,浏览器通过HTTP协议向服务器发送带有Upgrade头的HTTP Request消息 Connection:HTTP1.1中规定Upgrade只能应用在直接连接中。...带有Upgrade头的HTTP1.1消息必须含有Connection头,因为Connection头的意义就是,任何接收到此消息的人(往往是代理服务器)都要在转发此消息之前处理掉Connection中指定的域...Upgrade是HTTP1.1中用于定义转换协议的header域。如果服务器支持的话,客户端希望使用已经建立好的HTTP(TCP)连接,切换到WebSocket协议。...HTTP的版本为HTTP1.1,返回码是101,表示升级到websocket协议 Connection字段,包含Upgrade Upgrade字段,包含websocket Sec-WebSocket-Accept...大体上Websocket的身份认证都是发生在握手阶段,通过请求中的内容来认证。一个常见的例子是在url中附带参数。 new WebSocket("ws://localhost:3000?

    2.6K20

    Nginx代理WebSocket方法

    但是WebSocket中的握手和HTTP中的握手兼容, 它使用HTTP中的Upgrade协议头将连接从HTTP升级到WebSocket。这使得WebSocket程序可以更容易的使用现已存在的基础设施。...用于将连接从HTTP升级到WebSocket的HTTP升级机制使用Upgrade和Connection头。反向代理服务器在支持WebSocket时面临一些挑战。...允许在客户机和后端服务器之间建立隧道,Nginx支持WebSocket。对于NGINX将升级请求从客户端发送到后台服务器,必须明确设置Upgrade和Connection标题。...在WebSocket中,只需要服务器和浏览器通过HTTP协议进行一个握手的动作,然后单独建立一条TCP的通信通道进行数据的传送。...WebSocket连接的过程是: ❝1)客户端发起http请求,经过3次握手后,建立起TCP连接;http请求里存放WebSocket支持的版本号等信息,如:Upgrade、Connection、WebSocket-Version

    5.9K30

    ASP.NET Core 因为 Nginx 配置 Connection 为 Upgrade 导致 Kestrel 返回 400 错误

    我今天遇到了一个坑,我的服务器在经过了 Nginx 之后,发送的 POST 请求,如果请求里面有 Body 内容,那么 Kestrel 将会返回 400 错误,同时也不会经过任何的中间件 在 HTTP...的标准里面,在 HTTP 协议提供了一种特殊的机制,这一机制允许将一个已建立的连接升级成新的、不相容的协议。...而这个机制的做法如 mozilla 协议升级机制 文档所说,在客户端请求的时候将会添加两个额外的 Header 内容: Connection: Upgrade 设置 Connection 头的值为...“Upgrade” 来指示这是一个升级请求 Upgrade: protocols Upgrade 头指定一项或多项协议名,按优先级排序,以逗号分隔 一个典型的包含升级请求的例子差不多是这样的:...如果有 Upgrade 的,那么也在 Connection 上加上 Upgrade 的,否则就使用 keep-alive 作为内容 map $http_connection $connection_upgrade

    1.4K10

    一文读懂WebSocket

    在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。...必须带有Upgrade请求头,且其值必须为websocket,表示这个HTTP请求的目的是要申请升级到websocket协议,而不是其他协议。...必须带有Connection请求头,其值必须为Upgrade,表示这个HTTP请求是一个协议升级请求。 必须带有Sec-WebSocket-Key请求头,且其值为以BASE-64编码的随机字符串。...其次,该响应报文还必须满足如下要求: 必须包含Upgrade响应头,并且其值必须为websocket。 必须包含Connection响应头,且其值必须为Upgrade。...3.客户端检查服务端的响应报文 当客户端接收到服务端的响应报文后,会检查其HTTP状态码是不是101,以及检查是否有Upgrade、Connection与Sec-WebSocket-Accept响应头,

    96831

    通俗易懂讲解WebSocket

    在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。...必须带有Upgrade请求头,且其值必须为websocket,表示这个HTTP请求的目的是要申请升级到websocket协议,而不是其他协议。...必须带有Connection请求头,其值必须为Upgrade,表示这个HTTP请求是一个协议升级请求。 必须带有Sec-WebSocket-Key请求头,且其值为以BASE-64编码的随机字符串。...其次,该响应报文还必须满足如下要求: 必须包含Upgrade响应头,并且其值必须为websocket。 必须包含Connection响应头,且其值必须为Upgrade。...3.客户端检查服务端的响应报文 当客户端接收到服务端的响应报文后,会检查其HTTP状态码是不是101,以及检查是否有Upgrade、Connection与Sec-WebSocket-Accept响应头,

    1K50

    Nginx支持WebSocket反向代理-学习小结

    用于将连接从HTTP升级到WebSocket的HTTP升级机制使用Upgrade和Connection头。反向代理服务器在支持WebSocket时面临一些挑战。...允许在客户机和后端服务器之间建立隧道,NGINX支持WebSocket。对于NGINX将升级请求从客户端发送到后台服务器,必须明确设置Upgrade和Connection标题。...default upgrade; '' close; } map指令的作用: 该作用主要是根据客户端请求中$http_upgrade 的值,来构造改变$connection_upgrade...其中的规则没有做匹配,因此使用默认的,即 $connection_upgrade 的值会一直是 upgrade。然后如果 $http_upgrade为空字符串的话, 那值会是 close。...在WebSocket中,只需要服务器和浏览器通过HTTP协议进行一个握手的动作,然后单独建立一条TCP的通信通道进行数据的传送。

    3K40

    一文读懂WebSocket

    在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。...必须带有Upgrade请求头,且其值必须为websocket,表示这个HTTP请求的目的是要申请升级到websocket协议,而不是其他协议。...必须带有Connection请求头,其值必须为Upgrade,表示这个HTTP请求是一个协议升级请求。 必须带有Sec-WebSocket-Key请求头,且其值为以BASE-64编码的随机字符串。...其次,该响应报文还必须满足如下要求: 必须包含Upgrade响应头,并且其值必须为websocket。 必须包含Connection响应头,且其值必须为Upgrade。...3.客户端检查服务端的响应报文 当客户端接收到服务端的响应报文后,会检查其HTTP状态码是不是101,以及检查是否有Upgrade、Connection与Sec-WebSocket-Accept响应头,

    1K50

    WebSocket与Nginx的小秘密

    通过HTTP升级机制,使用HTTP的Upgrade和Connection协议头的方式可以将连接从HTTP升级为WebSocket。如下图所示 ?...会因为转发给缓存/代理服务器而失效),为了让Nginx代理服务器可以将来自客户端的Upgrade请求发送到后端服务器,要求Upgrade和Connection的头信息必须被显式的设置。...1.map是根据客户端请求中 $http_upgrade 的值来构造改变 $connection_upgrade 的值,即根据变量 $http_upgrade 的值和{} 里规则创建新的变量 $connection_upgrade...2.HTTP的Upgrade协议头机制用于将连接从HTTP连接升级到WebSocket连接,Upgrade机制使用了Upgrade协议头和Connection协议头;为了让Nginx可以将来自客户端的Upgrade...请求发送到后端服务器,Upgrade和Connection的头信息必须被显式的设置。

    1.7K20

    如何为Nginx配置 WebSocket?

    为了建立一个 WebSocket连接,客户端浏览器首先要向服务器端发起一个 HTTP请求,这个请求稍有些不同,它包含了一些附加头信息,其中附加头信息Upgrade: WebSocket表明这是一个申请协议升级的...服务器端解析这些附加的头信息,然后产生应答信息返回给客户端,客户端和服务器端的 WebSocket连接就建立起来了,双方就可以通过这个连接通道自由的传递信息,并且这个链接会持续存在直到客户端或者服务器端的某一方主动的关闭链接...: 13 Upgrade: WebSocket 表示这是一个特殊的 HTTP请求,客户端和服务器端的通讯协议从 HTTP协议升级到 WebSocket协议。...这是因为HTTP协议是无状态的(连接断开之后就不知道刚才的客户端是谁了)。WebSocket 解决了HTTP的无状态特性,在你关闭链接之前,服务器端会一直知道你的信息。 2....验证 访问服务器, 浏览器请求信息与服务器端响应信息如下图。 ? 小结 ---- 最后来总结下文章中的知识点 WebSocket 是一种在客户端与服务器端之间保持TCP长连接的网络协议。

    3K20

    为什么有了http,还需要websocket,我懂了!

    有两种情况长轮询会响应:达到http请求超时时间服务器正常处理请求返回响应结果长轮询和短轮询比起来,明显减少了很多不必要的http请求次数,但是连接挂起也会导致资源的浪费!...我们看下WebSocket协议客户端请求和服务端响应示例,关于http这里就不多介绍了(这里自行回想下Http请求的request和reposone部分)header头的意思是,浏览器想升级http协议...// 6上述字段说明如下:Upgrade:字段必须设置 websocket,表示希望升级到 WebSocket 协议Connection:须设置 Upgrade,表示客户端希望连接升级Sec-WebSocket-Key.../MboVUk= //4上述字段说明如下:101 响应码确认升级到 WebSocket 协议Connection:值为 “Upgrade” 来指示这是一个升级请求Upgrade:表示升级为 WebSocket...的“IP 地址 + 端口号”,开头的协议名不是“http”,引入的是两个新的名字:“ws”和“wss”,分别表示明文和加密的 WebSocket 协议连接确认发建立连接是前提,但是只有当请求头参数Sec-WebSocket-Key

    1.1K61

    WebSocket简介

    这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然而HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。...下面是一个典型的Websocket握手请求实例: 客户端请求 GET / HTTP/1.1 Upgrade: websocket Connection: Upgrade Host: example.com...但是,与Referer 不同的是,Origin 只包含了协议和主机名称。 其他一些定义在 HTTP 协议中的字段,如 Cookie 等,也可以在 Websocket 中使用。...实例 为了建立一个 WebSocket 连接,客户端浏览器首先要向服务器发起一个 HTTP 请求,这个请求和通常的 HTTP 请求不同,包含了一些附加头信息,其中附加头信息"Upgrade: WebSocket..."表明这是一个申请协议升级的 HTTP 请求,服务器端解析这些附加的头信息然后产生应答信息返回给客户端,客户端和服务器端的 WebSocket 连接就建立起来了,双方就可以通过这个连接通道自由的传递信息

    96820

    Nginx学习之反向代理WebSocket配置实例

    WebSocket集群 在实际的生产环境中,要求多个WebSocket服务器必须具有高性能和高可用,那么WebSocket协议就需要一个负载均衡层,NGINX从1.3开始支持WebSocket,其可以作为一个反向代理和为...Nginx配置 注:看官方文档说 Nginx 在 1.3 以后的版本才支持 websocket 反向代理,所以要想使用支持 websocket 的功能,必须升级到 1.3 以后的版本 NGINX通过允许一个在客户端和后端服务器之间建立的隧道来支持...为了NGINX发送来至于客户端Upgrade请求到后端服务器,Upgrade和Connection头部必须被设置明确。...反向代理服务器在支持WebSocket时面临的挑战 WebSocket是端对端的,所以当一个代理服务器从客户端拦截一个Upgrade请求,它需要去发送它自己的Upgrade请求到后端服务器,也包括合适的头...因为WebSocket是一个长连接,不像HTTP那样是典型的短连接,所以反向代理服务器需要允许连接保持着打开,而不是在它们看起来空闲时就将它们关闭。

    1.8K50

    刨根问底 HTTP 和 WebSocket 协议(下)

    为什么要用 WebSocket 来替代 HTTP 上一篇中提到WebSocket的目的就是解决网络传输中的双向通信的问题,HTTP1.1默认使用持久连接(persistent connection),在一个...Connection:HTTP1.1中规定Upgrade只能应用在「直接连接」中,所以带有Upgrade头的HTTP1.1消息必须含有Connection头,因为Connection头的意义就是,任何接收到此消息的人...4.此Request消息中必须含有Host头域,其内容必须和WS的Uri中定义的相同。 5.此Request消息必须包含Upgrade头域,其内容必须包含websocket关键字。...如果是101,进行下一步,开始解析header域,所有header域的值不区分大小写。 判断是否含有Upgrade头,且内容包含websocket。...判断是否含有Connection头,且内容包含Upgrade 判断是否含有Sec-WebSocket-Accept头,其内容在下面介绍。

    1.4K10
    领券