Do not enable H2C by default when using Reactor Netty

Previously, Reactor Netty was the only embedded server that enabled
H2C by default. This commit updates the factory to only enable HTTP/2
when SSL has also been configured, aligning it with Jetty, Tomcat,
and Undertow.

If H2C is required, it can be enabled using a NettyServerCustomizer:

@Bean
NettyServerCustomizer h2cCustomizer() {
    return (httpServer) ->
           httpServer.protocol(HttpProtocol.HTTP11, HttpProtocol.H2C);
}

Closes gh-17867
This commit is contained in:
Andy Wilkinson 2019-09-17 10:52:29 +01:00
parent d5adbbb626
commit c662c404c5
1 changed files with 2 additions and 7 deletions

View File

@ -161,13 +161,8 @@ public class NettyReactiveWebServerFactory extends AbstractReactiveWebServerFact
}
private HttpProtocol[] listProtocols() {
if (getHttp2() != null && getHttp2().isEnabled()) {
if (getSsl() != null && getSsl().isEnabled()) {
return new HttpProtocol[] { HttpProtocol.H2, HttpProtocol.HTTP11 };
}
else {
return new HttpProtocol[] { HttpProtocol.H2C, HttpProtocol.HTTP11 };
}
if (getHttp2() != null && getHttp2().isEnabled() && getSsl() != null && getSsl().isEnabled()) {
return new HttpProtocol[] { HttpProtocol.H2, HttpProtocol.HTTP11 };
}
return new HttpProtocol[] { HttpProtocol.HTTP11 };
}