From 7e768a2443ecbedf9ff422bc6ff88e27ae8e8e4f Mon Sep 17 00:00:00 2001 From: Sebastian Date: Wed, 30 Jan 2019 20:47:53 +0100 Subject: [PATCH] Cleanup host attempt. --- src/Squidex/Config/Web/WebExtensions.cs | 1 + src/Squidex/Pipeline/CleanupHostMiddleware.cs | 44 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 src/Squidex/Pipeline/CleanupHostMiddleware.cs diff --git a/src/Squidex/Config/Web/WebExtensions.cs b/src/Squidex/Config/Web/WebExtensions.cs index e4f58f95f..b50350723 100644 --- a/src/Squidex/Config/Web/WebExtensions.cs +++ b/src/Squidex/Config/Web/WebExtensions.cs @@ -115,6 +115,7 @@ namespace Squidex.Config.Web }); app.UseMiddleware(); + app.UseMiddleware(); } } } diff --git a/src/Squidex/Pipeline/CleanupHostMiddleware.cs b/src/Squidex/Pipeline/CleanupHostMiddleware.cs new file mode 100644 index 000000000..5db673417 --- /dev/null +++ b/src/Squidex/Pipeline/CleanupHostMiddleware.cs @@ -0,0 +1,44 @@ +// ========================================================================== +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex UG (haftungsbeschraenkt) +// All rights reserved. Licensed under the MIT license. +// ========================================================================== + +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; + +namespace Squidex.Pipeline +{ + public class CleanupHostMiddleware + { + private readonly RequestDelegate next; + + public CleanupHostMiddleware(RequestDelegate next) + { + this.next = next; + } + + public Task Invoke(HttpContext context) + { + var request = context.Request; + + if (request.Host.HasValue && (HasHttpsPort(request) || HasHttpPort(request))) + { + request.Host = new HostString(request.Host.Host); + } + + return next(context); + } + + private static bool HasHttpPort(HttpRequest request) + { + return request.Protocol == "http" && request.Host.Port == 80; + } + + private static bool HasHttpsPort(HttpRequest request) + { + return request.Protocol == "https" && request.Host.Port == 443; + } + } +}