Enable Http/2 by default #2720
This commit is contained in:
parent
94cfc01fbf
commit
c7dd9ff68a
|
|
@ -354,9 +354,6 @@
|
||||||
<data name="EndPointRequiresAtLeastOneProtocol" xml:space="preserve">
|
<data name="EndPointRequiresAtLeastOneProtocol" xml:space="preserve">
|
||||||
<value>An endpoint must be configured to serve at least one protocol.</value>
|
<value>An endpoint must be configured to serve at least one protocol.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EndPointRequiresTlsForHttp1AndHttp2" xml:space="preserve">
|
|
||||||
<value>Using both HTTP/1.x and HTTP/2 on the same endpoint requires the use of TLS.</value>
|
|
||||||
</data>
|
|
||||||
<data name="EndPointHttp2NotNegotiated" xml:space="preserve">
|
<data name="EndPointHttp2NotNegotiated" xml:space="preserve">
|
||||||
<value>HTTP/2 over TLS was not negotiated on an HTTP/2-only endpoint.</value>
|
<value>HTTP/2 over TLS was not negotiated on an HTTP/2-only endpoint.</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
||||||
|
|
@ -363,11 +363,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal
|
||||||
error = CoreStrings.EndPointRequiresAtLeastOneProtocol;
|
error = CoreStrings.EndPointRequiresAtLeastOneProtocol;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!hasTls && http1Enabled && http2Enabled)
|
|
||||||
{
|
|
||||||
error = CoreStrings.EndPointRequiresTlsForHttp1AndHttp2;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!http1Enabled && http2Enabled && hasTls && !Http2Id.Span.SequenceEqual(applicationProtocol.Span))
|
if (!http1Enabled && http2Enabled && hasTls && !Http2Id.Span.SequenceEqual(applicationProtocol.Span))
|
||||||
{
|
{
|
||||||
error = CoreStrings.EndPointHttp2NotNegotiated;
|
error = CoreStrings.EndPointHttp2NotNegotiated;
|
||||||
|
|
@ -379,6 +374,12 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal
|
||||||
return HttpProtocols.None;
|
return HttpProtocols.None;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!hasTls && http1Enabled)
|
||||||
|
{
|
||||||
|
// Even if Http2 was enabled, default to Http1 because it's ambiguous without ALPN.
|
||||||
|
return HttpProtocols.Http1;
|
||||||
|
}
|
||||||
|
|
||||||
return http2Enabled && (!hasTls || Http2Id.Span.SequenceEqual(applicationProtocol.Span)) ? HttpProtocols.Http2 : HttpProtocols.Http1;
|
return http2Enabled && (!hasTls || Http2Id.Span.SequenceEqual(applicationProtocol.Span)) ? HttpProtocols.Http2 : HttpProtocols.Http1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -126,8 +126,8 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The protocols enabled on this endpoint.
|
/// The protocols enabled on this endpoint.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>Defaults to HTTP/1.x only.</remarks>
|
/// <remarks>Defaults to HTTP/1.x and HTTP/2.</remarks>
|
||||||
public HttpProtocols Protocols { get; set; } = HttpProtocols.Http1;
|
public HttpProtocols Protocols { get; set; } = HttpProtocols.Http1AndHttp2;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the <see cref="List{IConnectionAdapter}"/> that allows each connection <see cref="System.IO.Stream"/>
|
/// Gets the <see cref="List{IConnectionAdapter}"/> that allows each connection <see cref="System.IO.Stream"/>
|
||||||
|
|
|
||||||
|
|
@ -1116,20 +1116,6 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core
|
||||||
internal static string FormatEndPointRequiresAtLeastOneProtocol()
|
internal static string FormatEndPointRequiresAtLeastOneProtocol()
|
||||||
=> GetString("EndPointRequiresAtLeastOneProtocol");
|
=> GetString("EndPointRequiresAtLeastOneProtocol");
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Using both HTTP/1.x and HTTP/2 on the same endpoint requires the use of TLS.
|
|
||||||
/// </summary>
|
|
||||||
internal static string EndPointRequiresTlsForHttp1AndHttp2
|
|
||||||
{
|
|
||||||
get => GetString("EndPointRequiresTlsForHttp1AndHttp2");
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Using both HTTP/1.x and HTTP/2 on the same endpoint requires the use of TLS.
|
|
||||||
/// </summary>
|
|
||||||
internal static string FormatEndPointRequiresTlsForHttp1AndHttp2()
|
|
||||||
=> GetString("EndPointRequiresTlsForHttp1AndHttp2");
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// HTTP/2 over TLS was not negotiated on an HTTP/2-only endpoint.
|
/// HTTP/2 over TLS was not negotiated on an HTTP/2-only endpoint.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Tests
|
||||||
public void ProtocolsDefault()
|
public void ProtocolsDefault()
|
||||||
{
|
{
|
||||||
var listenOptions = new ListenOptions(new IPEndPoint(IPAddress.Loopback, 0));
|
var listenOptions = new ListenOptions(new IPEndPoint(IPAddress.Loopback, 0));
|
||||||
Assert.Equal(HttpProtocols.Http1, listenOptions.Protocols);
|
Assert.Equal(HttpProtocols.Http1AndHttp2, listenOptions.Protocols);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
|
||||||
|
|
@ -25,9 +25,9 @@ namespace Microsoft.AspNetCore.Server.Kestrel.FunctionalTests
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public Task Server_Http1AndHttp2_Cleartext_Error()
|
public Task Server_Http1AndHttp2_Cleartext_Http1Default()
|
||||||
{
|
{
|
||||||
return TestError<InvalidOperationException>(HttpProtocols.Http1AndHttp2, CoreStrings.EndPointRequiresTlsForHttp1AndHttp2);
|
return TestSuccess(HttpProtocols.Http1AndHttp2, "GET / HTTP/1.1\r\nHost:\r\n\r\n", "HTTP/1.1 200 OK");
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue