From 0f8542e4b27c1e6dc26f83a18b4bc7c7e050dd9b Mon Sep 17 00:00:00 2001 From: Kristian Hellang Date: Thu, 12 May 2016 14:05:19 +0200 Subject: [PATCH] Throw a more descriptive exception for missing CORS policies --- .../CorsAuthorizationFilter.cs | 7 + .../Properties/Resources.Designer.cs | 46 +++++++ .../Resources.resx | 123 ++++++++++++++++++ 3 files changed, 176 insertions(+) create mode 100644 src/Microsoft.AspNetCore.Mvc.Cors/Properties/Resources.Designer.cs create mode 100644 src/Microsoft.AspNetCore.Mvc.Cors/Resources.resx diff --git a/src/Microsoft.AspNetCore.Mvc.Cors/CorsAuthorizationFilter.cs b/src/Microsoft.AspNetCore.Mvc.Cors/CorsAuthorizationFilter.cs index 793e9945d6..4e2cc209c1 100644 --- a/src/Microsoft.AspNetCore.Mvc.Cors/CorsAuthorizationFilter.cs +++ b/src/Microsoft.AspNetCore.Mvc.Cors/CorsAuthorizationFilter.cs @@ -68,6 +68,13 @@ namespace Microsoft.AspNetCore.Mvc.Cors if (request.Headers.ContainsKey(CorsConstants.Origin)) { var policy = await _corsPolicyProvider.GetPolicyAsync(httpContext, PolicyName); + + if (policy == null) + { + throw new InvalidOperationException( + Resources.FormatCorsAuthorizationFilter_MissingCorsPolicy(PolicyName)); + } + var result = _corsService.EvaluatePolicy(context.HttpContext, policy); _corsService.ApplyResult(result, context.HttpContext.Response); diff --git a/src/Microsoft.AspNetCore.Mvc.Cors/Properties/Resources.Designer.cs b/src/Microsoft.AspNetCore.Mvc.Cors/Properties/Resources.Designer.cs new file mode 100644 index 0000000000..b36a27e978 --- /dev/null +++ b/src/Microsoft.AspNetCore.Mvc.Cors/Properties/Resources.Designer.cs @@ -0,0 +1,46 @@ +// +namespace Microsoft.AspNetCore.Mvc.Cors +{ + using System.Globalization; + using System.Reflection; + using System.Resources; + + internal static class Resources + { + private static readonly ResourceManager _resourceManager + = new ResourceManager("Microsoft.AspNetCore.Mvc.Cors.Resources", typeof(Resources).GetTypeInfo().Assembly); + + /// + /// A CORS policy named '{0}' could not be found. + /// + internal static string CorsAuthorizationFilter_MissingCorsPolicy + { + get { return GetString("CorsAuthorizationFilter_MissingCorsPolicy"); } + } + + /// + /// A CORS policy named '{0}' could not be found. + /// + internal static string FormatCorsAuthorizationFilter_MissingCorsPolicy(object p0) + { + return string.Format(CultureInfo.CurrentCulture, GetString("CorsAuthorizationFilter_MissingCorsPolicy"), p0); + } + + private static string GetString(string name, params string[] formatterNames) + { + var value = _resourceManager.GetString(name); + + System.Diagnostics.Debug.Assert(value != null); + + if (formatterNames != null) + { + for (var i = 0; i < formatterNames.Length; i++) + { + value = value.Replace("{" + formatterNames[i] + "}", "{" + i + "}"); + } + } + + return value; + } + } +} diff --git a/src/Microsoft.AspNetCore.Mvc.Cors/Resources.resx b/src/Microsoft.AspNetCore.Mvc.Cors/Resources.resx new file mode 100644 index 0000000000..6c4897ab7f --- /dev/null +++ b/src/Microsoft.AspNetCore.Mvc.Cors/Resources.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + A CORS policy named '{0}' could not be found. + +