В настоящее время я работаю над интегрированным Cors в приложении .Net Core. Ранее я имел дело с Cors в рамках полной .NET Framework (4.6.1), которая имела возможность устанавливать свойство AllowAnyOrigin
в рамках данного CorsPolicy.
Как упоминалось ранее, я написал .NET Core WebApi, в который я пытаюсь внедрить Cors. У меня есть чтение из AppSetting, хранящееся в моем appSettings.json
, из которого могут быть три вещи:
- Если для appsetting задана звездочка, я хотел бы видеть свойство AllowAnyOrigin, как я это делал в полной .NET Framework. (Вот где моя проблема.)
- Если для 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, чтобы помочь с моей настраиваемой политикой.