Как включить CORS в ASP.NET Керн


Я пытаюсь включить совместное использование ресурсов cross origin на моем ASP.NET ядро веб-API, но я застрял.

The

4 89

4 ответа:

вы должны настроить политику CORS при запуске приложения в ConfigureServices способ:

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(o => o.AddPolicy("MyPolicy", builder =>
    {
        builder.AllowAnyOrigin()
               .AllowAnyMethod()
               .AllowAnyHeader();
    }));

    // ...
}

The CorsPolicyBuilder на builder позволяет настроить политику в соответствии с вашими потребностями. Теперь вы можете использовать это имя для применения политики к контроллерам и действиям:

[EnableCors("MyPolicy")]

или применить его к каждому запросу:

public void Configure(IApplicationBuilder app)
{
    app.UseCors("MyPolicy");

    // ...
}

это .Net-Core 1.1

к сожалению, документы очень запутаны в этом конкретном случае. Так что я сделаю его мертвым-просто:

  • добавить Microsoft.AspNetCore.Cors пакет nuget для вашего проекта
  • на ConfigureServices способ, добавьте services.AddCors();
  • на Configure способ, перед вызовом app.UseMvc() и app.UseStaticFiles() добавить:

    app.UseCors(builder => builder
        .AllowAnyOrigin()
        .AllowAnyMethod()
        .AllowAnyHeader()
        .AllowCredentials());
    

вот и все. Каждый клиент имеет доступ к вашему ASP.NET Керн Сайт / API.

на .Net-Core 2.0

  • добавить Microsoft.AspNetCore.Cors пакет nuget для вашего проекта
  • на ConfigureServices способ, перед вызовом services.AddMvc() добавить:

     services.AddCors(options =>
        {
            options.AddPolicy("AllowAll",
                builder =>
                {
                    builder
                    .AllowAnyOrigin() 
                    .AllowAnyMethod()
                    .AllowAnyHeader()
                    .AllowCredentials();
                });
        });
    
  • на Configure способ, перед вызовом app.UseMvc() добавьте app.UseCors("AllowAll");

    AllowAll это имя политики, которое мы должны упомянуть в приложении.Пользователи. Это может быть любое имя.

на основе ответ Хенка я смог придумать конкретный домен, метод, который я хочу разрешить, а также заголовок, который я хочу включить CORS для:

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(options =>
         options.AddPolicy("AllowSpecific", p => p.WithOrigins("http://localhost:1233")
                                                   .WithMethods("GET")
                                                   .WithHeaders("name")));
    services.AddMvc();
}

использование:

[EnableCors("AllowSpecific")]

'

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddCors(options =>
        {
            options.AddPolicy("AllowAnyOrigin",
                builder => builder
                .AllowAnyOrigin()
                .AllowAnyMethod()
                .AllowAnyHeader());
        });

        services.Configure<MvcOptions>(options => {
            options.Filters.Add(new CorsAuthorizationFilterFactory("AllowAnyOrigin"));
        });            
    }

'