Как снять ограничение CORS для одного действия контроллера в. net core 3.1 - PullRequest
0 голосов
/ 13 марта 2020

Как снять ограничение CORS для одного действия контроллера

Я реализовал CORS для одного приложения для всех контроллеров / всех действий в одном месте. Но не знаю, как снять это ограничение только для одного контроллера

Мой код для еще одного места:

public static IWebHostBuilder BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args).
            ConfigureKestrel(serverOptions =>
            {
            }).UseIISIntegration()
            .UseStartup<StartupShutdownHandler>();
        private const string MyAllowSpecificOrigins = "_myAllowSpecificOrigins";

        public StartupShutdownHandler(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }        
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
            CorsRelatedPolicyAddition(services);
            services.Configure<ForwardedHeadersOptions>(options =>
            {
                options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
            });        }

        private void CorsRelatedPolicyAddition(IServiceCollection services)
        {

                services.AddCors(options =>
                {
                    options.AddPolicy(MyAllowSpecificOrigins, builder => { builder.AllowedAnyOrigins().AllowAnyMethod().AllowAnyHeader(); });
                });

        }        
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IHostApplicationLifetime applicationLifetime)
        {...


            app.UseCors(MyAllowSpecificOrigins);

            ..

        }

1 Ответ

0 голосов
/ 13 марта 2020

Для всего контроллера (все методы в нем)

[EnableCors(origins: "http://www.example.com", headers: "*", methods: "*")]
 public class TestController : ApiController
 {
    // Controller methods not shown...
 }

Только для конкретного метода

[EnableCors(origins: "http://www.example.com", headers: "*", methods: "*")]
public HttpResponseMessage GetItem(int id) { ... }

Подробнее см. ссылка

...