Предоставить builder массив исходных данных.С исходными данными в AddCors

#asp.net-core #asp.net-core-webapi

#asp.net-ядро #asp.net-core-webapi

Вопрос:

Я думал, что на это уже будет ответ, но я не смог его найти.

У меня есть настройка CORS, подобная этой, на моем сервере API.

     services.AddCors(options =>
    {
        options.AddDefaultPolicy(builder => {
            builder.WithOrigins(AddCorsOrigin1LocalHost,
                                AddCorsOrigin2ProductionSite,
                                AddCorsOrigin3DevOrTestOrSomethingElseSite);
            builder.AllowAnyMethod();
            builder.AllowAnyHeader();
            builder.AllowCredentials();
        });
    });
  

Я добавляю сайты, которые я хочу, один за другим, используя локальную строку. Это работает до тех пор, пока у меня есть только 3 источника для использования. Я могу продолжать изменять исходные данные, когда захочу.

Однако, если у меня есть 4-й источник или более источников, я должен добавить новую локальную строку и обновить ее в приведенном выше блоке кода.

Мне любопытно, есть ли в любом случае, я могу просто отправить коллекцию строк из массива или списка. таким образом, когда мне нужно добавить или удалить исходные данные, я мог бы просто манипулировать коллекцией строк.

Ответ №1:

Вы можете настроить сайты в appsettings.json:

Вот демонстрация:

appsettings.json (я добавляю к нему исходные данные):

 {
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "Origins": "http://example.com,http://www.contoso.com"
}
  

Startup.cs(изменить Origins на строку[]):

 string[] s = Configuration["Origins"].Split(",");
            services.AddCors(options =>
            {
                options.AddPolicy(name: MyAllowSpecificOrigins,
                                  builder =>
                                  {
                                      builder.WithOrigins(s);
                                  });
            });
  

Результат:
введите описание изображения здесь

Комментарии:

1. ах. выглядит аккуратно. Я протестирую его и обновлю здесь.

2. это работает. и это также показало мне, как использовать настройки приложения для всех видов хранения других значений. очень хорошо.