File: RedirectToWwwHelper.cs
Web Access
Project: src\src\Middleware\Rewrite\src\Microsoft.AspNetCore.Rewrite.csproj (Microsoft.AspNetCore.Rewrite)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Extensions;
 
namespace Microsoft.AspNetCore.Rewrite;
 
internal static class RedirectToWwwHelper
{
    private const string Localhost = "localhost";
 
    public static bool IsHostInDomains(HttpRequest request, string[]? domains)
    {
        if (request.Host.Host.Equals(Localhost, StringComparison.OrdinalIgnoreCase))
        {
            return false;
        }
 
        if (domains != null)
        {
            var isHostInDomains = false;
 
            foreach (var domain in domains)
            {
                if (domain.Equals(request.Host.Host, StringComparison.OrdinalIgnoreCase))
                {
                    isHostInDomains = true;
                    break;
                }
            }
 
            if (!isHostInDomains)
            {
                return false;
            }
        }
 
        return true;
    }
 
    public static void SetRedirect(RewriteContext context, HostString newHost, int statusCode)
    {
        var request = context.HttpContext.Request;
        var response = context.HttpContext.Response;
 
        var newUrl = UriHelper.BuildAbsolute(
            request.Scheme,
            newHost,
            request.PathBase,
            request.Path,
            request.QueryString);
 
        response.StatusCode = statusCode;
        response.Headers.Location = newUrl;
        context.Result = RuleResult.EndResponse;
    }
}