Отвечая на мой собственный вопрос ..
Итак, .NET Core с открытым исходным кодом и почему бы не посмотреть на исходный код :)
internal static class CorsPolicyExtensions
{
private const string _WildcardSubdomain = "*.";
public static bool IsOriginAnAllowedSubdomain(this CorsPolicy policy, string origin)
{
if (policy.Origins.Contains(origin))
{
return true;
}
if (Uri.TryCreate(origin, UriKind.Absolute, out var originUri))
{
return policy.Origins
.Where(o => o.Contains($"://{_WildcardSubdomain}"))
.Select(CreateDomainUri)
.Any(domain => UriHelpers.IsSubdomainOf(originUri, domain));
}
return false;
}
private static Uri CreateDomainUri(string origin)
{
return new Uri(origin.Replace(_WildcardSubdomain, string.Empty), UriKind.Absolute);
}
}
И мы можемсм. в коде .Where(o => o.Contains($"://{_WildcardSubdomain}"))
, что он не будет пытаться сопоставить источник, используя подстановочный знак, если указанное происхождение не содержит ://*.
.
. Как упомянуто в комментариях @Amy, мы могли бы использоватьтолько один *
для представления всего доменного имени.