【发布时间】:2019-06-11 14:51:33
【问题描述】:
我目前正在开发 .Net Core 应用程序中的集成 Cors。我之前在完整的 .NET Framework (4.6.1) 中处理过 Cors,它能够在给定的 CorsPolicy 中设置 AllowAnyOrigin 属性。
如前所述,我编写了一个 .NET Core WebApi,我正在尝试在其中实现 Cors。我从存储在我的appSettings.json 中的 AppSetting 中读取它,它可以是三件事:
- 如果 appsetting 设置为星号,那么我希望看到 AllowAnyOrigin 属性,就像我在完整的 .NET 框架中所做的那样。 (这就是我的问题所在。)
- 如果 appsetting 设置为逗号分隔的字符串,例如
https://example.com, https://test.com,则会根据需要将其应用于策略。 - 如果应用设置已被注释掉或留空,那么我正在从 Azure 表存储读取行列表以提供给定来源的列表。
下面是我之前处理过的完整 .NET 框架的示例。
var origins = ConfigurationManager.AppSettings[KeyCorsAllowOrigin];
switch (origins)
{
case null:
_corsPolicy.Origins.Clear();
foreach (var item in new StorageConfigurationManager().GetRowKeys())
{
_corsPolicy.Origins.Add("https://" + item);
}
break;
case "*":
_corsPolicy.AllowAnyOrigin = true;
break;
default:
_corsPolicy.AllowAnyOrigin = false;
if (!string.IsNullOrWhiteSpace(origins)) AddCommaSeparatedValuesToCollection(origins, _corsPolicy.Origins);
break;
}
我认为我可以在 .NET Core 和 Microsoft.AspNetCore.Cors.Infrastructure 包中复制此功能,但似乎 Microsoft 限制了设置该属性的访问权限,并且只能从中读取。
有谁知道设置这个的方法吗?
我知道您可以在管道中构建 CorsPolicy,然后使用 .AllowAnyOrigin(),但我目前正在使用自定义 Cors 中间件来帮助我的自定义策略。
【问题讨论】: