If the web server advertises that it supports RFC 8441 via the HTTP/2 SETTINGS_ENABLE_CONNECT_PROTOCOL
parameter then some web browsers (Chrome, Firefox) will follow RFC 8441 to open a WebSocket over a HTTP/2 stream using the CONNECT
HTTP method.
The org.springframework.web.socket.server.support.AbstractHandshakeHandler#doHandshake
method however only supports the GET
method and will respond with 405 Method Not Allowed.
and log an error message: Handshake failed due to unexpected HTTP method: CONNECT
The work around is to disable RFC 8441 in your web server, e.g. with Jetty you can set org.eclipse.jetty.http2.server.AbstractHTTP2ServerConnectionFactory#setConnectProtocolEnabled
to false (the default is that it is enabled in Jetty 12 EE10).
This problem was observed in Spring 6.2.0.
https://github.com/spring-projects/spring-framework/blob/f8fd6da10b2264ac98ef1735a9205ad5dcc88224/spring-websocket/src/main/java/org/springframework/web/socket/server/support/AbstractHandshakeHandler.java#L172-L179