@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
/ *
* Copyright 2002 - 2024 the original author or authors .
* Copyright 2002 - 2025 the original author or authors .
*
* Licensed under the Apache License , Version 2 . 0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
@ -25,6 +25,7 @@ import java.util.Collections;
@@ -25,6 +25,7 @@ import java.util.Collections;
import java.util.List ;
import java.util.Locale ;
import java.util.Map ;
import java.util.Set ;
import org.apache.commons.logging.Log ;
import org.apache.commons.logging.LogFactory ;
@ -77,6 +78,9 @@ import org.springframework.web.socket.server.standard.WebSphereRequestUpgradeStr
@@ -77,6 +78,9 @@ import org.springframework.web.socket.server.standard.WebSphereRequestUpgradeStr
* /
public abstract class AbstractHandshakeHandler implements HandshakeHandler , Lifecycle {
// For WebSocket upgrades in HTTP/2 (see RFC 8441)
private static final HttpMethod CONNECT_METHOD = HttpMethod . valueOf ( "CONNECT" ) ;
private static final boolean tomcatWsPresent ;
private static final boolean jettyWsPresent ;
@ -210,11 +214,12 @@ public abstract class AbstractHandshakeHandler implements HandshakeHandler, Life
@@ -210,11 +214,12 @@ public abstract class AbstractHandshakeHandler implements HandshakeHandler, Life
logger . trace ( "Processing request " + request . getURI ( ) + " with headers=" + headers ) ;
}
try {
if ( HttpMethod . GET ! = request . getMethod ( ) ) {
HttpMethod httpMethod = request . getMethod ( ) ;
if ( HttpMethod . GET ! = httpMethod & & CONNECT_METHOD ! = httpMethod ) {
response . setStatusCode ( HttpStatus . METHOD_NOT_ALLOWED ) ;
response . getHeaders ( ) . setAllow ( Collections . singleton ( HttpMethod . GET ) ) ;
response . getHeaders ( ) . setAllow ( Set . of ( HttpMethod . GET , CONNECT_METHOD ) ) ;
if ( logger . isErrorEnabled ( ) ) {
logger . error ( "Handshake failed due to unexpected HTTP method: " + request . getMethod ( ) ) ;
logger . error ( "Handshake failed due to unexpected HTTP method: " + httpMethod ) ;
}
return false ;
}