Merge branch '6.2.x'

This commit is contained in:
rstoyanchev
2025-02-03 15:31:32 +00:00
4 changed files with 41 additions and 12 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2018 the original author or authors.
* Copyright 2002-2015 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.
@@ -50,19 +50,38 @@ public class ServerResponseResultHandler implements HandlerResultHandler, Initia
/**
* Configure HTTP message writers to serialize the request body with.
* <p>By default this is set to {@link ServerCodecConfigurer}'s default writers.
* <p>By default, this is set to {@link ServerCodecConfigurer}'s default writers.
*/
public void setMessageWriters(List<HttpMessageWriter<?>> configurer) {
this.messageWriters = configurer;
}
/**
* Return the configured {@link HttpMessageWriter}'s.
* @since 6.2.3
*/
public List<HttpMessageWriter<?>> getMessageWriters() {
return this.messageWriters;
}
/**
* Set the current view resolvers.
*/
public void setViewResolvers(List<ViewResolver> viewResolvers) {
this.viewResolvers = viewResolvers;
}
/**
* Return the configured {@link ViewResolver}'s.
* @since 6.2.3
*/
public List<ViewResolver> getViewResolvers() {
return this.viewResolvers;
}
/**
* Set the order for this result handler relative to others.
* <p>By default set to 0. It is generally safe to place it early in the
* <p>By default, set to 0. It is generally safe to place it early in the
* order as it looks for a concrete return type.
*/
public void setOrder(int order) {

View File

@@ -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.
@@ -22,6 +22,7 @@ import java.security.Principal;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Predicate;
import java.util.stream.Collectors;
@@ -65,6 +66,9 @@ import org.springframework.web.server.ServerWebInputException;
*/
public class HandshakeWebSocketService implements WebSocketService, Lifecycle {
// For WebSocket upgrades in HTTP/2 (see RFC 8441)
private static final HttpMethod CONNECT_METHOD = HttpMethod.valueOf("CONNECT");
private static final String SEC_WEBSOCKET_KEY = "Sec-WebSocket-Key";
private static final String SEC_WEBSOCKET_PROTOCOL = "Sec-WebSocket-Protocol";
@@ -194,9 +198,9 @@ public class HandshakeWebSocketService implements WebSocketService, Lifecycle {
HttpMethod method = request.getMethod();
HttpHeaders headers = request.getHeaders();
if (HttpMethod.GET != method) {
if (HttpMethod.GET != method && CONNECT_METHOD != method) {
return Mono.error(new MethodNotAllowedException(
request.getMethod(), Collections.singleton(HttpMethod.GET)));
request.getMethod(), Set.of(HttpMethod.GET, CONNECT_METHOD)));
}
if (!"WebSocket".equalsIgnoreCase(headers.getUpgrade())) {