Подтвердить что ты не робот

Как включить запросы перекрестного происхождения (CORS) в ASP.NET 5 и MVC 6?

Я хотел бы включить CORS в API, созданный с помощью MVC 6, но все текущие документы относятся к более ранним версиям этой структуры.

4b9b3361

Ответ 1

Заметки о новых функциях Cors очень легкие, но я смог заставить его работать в моем решении, рассматривая новые классы и методы. Мой веб-API startup.cs выглядит следующим образом. Вы можете увидеть, как вы можете построить свое происхождение и политику, используя новый класс CorsPolicy. И включение CORS с методами AddCors и UseCors.

 public void ConfigureServices(IServiceCollection services)
 {
     services.AddMvc();
     //Add Cors support to the service
     services.AddCors();

     var policy = new Microsoft.AspNet.Cors.Core.CorsPolicy();

     policy.Headers.Add("*");    
     policy.Methods.Add("*");          
     policy.Origins.Add("*");
     policy.SupportsCredentials = true;

     services.ConfigureCors(x=>x.AddPolicy("mypolicy", policy));

 }


 public void Configure(IApplicationBuilder app, IHostingEnvironment  env)
 {
     // Configure the HTTP request pipeline.

     app.UseStaticFiles();
     //Use the new policy globally
     app.UseCors("mypolicy");
     // Add MVC to the request pipeline.
     app.UseMvc();
 }

Вы также можете ссылаться на политику в контроллерах с такими новыми атрибутами

[EnableCors("mypolicy")]
[Route("api/[controller]")]  

Ответ 2

Я работал, используя следующий код:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
    services.AddCors(options => options.AddPolicy("AllowAll", p => p.AllowAnyOrigin()));
}

Вы можете связать AllowAnyHeader() и/или AllowAnyMethod() с действием configure, если это необходимо.

Чтобы настроить его для полного приложения:

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

Или просто для контроллера:

[EnableCors("AllowAll")]
public class HomeController : Controller
{
   // ...
}

-

Обновление: настройка CORS для всех запросов может быть выполнена немного проще:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
    services.AddCors();
}

public void Configure(IApplicationBuilder app)
{
    app.UseCors(builder =>
    {
        builder.WithOrigins("http://some.origin.com")
               .WithMethods("GET", "POST")
               .AllowAnyHeader();
    });
}

Для получения дополнительной информации см. docs.

Ответ 3

В самом последнем RC2 ядра ASP.NET.

Пакеты NuGet

"Microsoft.AspNetCore.Owin": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Cors": "1.0.0-rc2-final",

В Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    // Add framework services.
    services.AddCors();
    services.AddMvc();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();

    app.UseCors(builder =>  builder
    .AllowAnyOrigin());
    app.UseMvc();
}

Ответ 4

Поддержка CORS в настоящее время находится в разработке. Следующим вопросом является отслеживание того, что: https://github.com/aspnet/Mvc/issues/498

Обновление (3/28/2015):
Эта функция была проверена и должна быть доступна в следующей версии.

Ответ 5

cs1929 метод services.ConfigureCors(...) больше не существует. Он объединен с AddCors:

services.AddCors(options => 
    options.AddPolicy("AllowAllOrigins", builder => builder.AllowAnyOrigin()));

Ответ 6

Установить: Microsoft.AspNetCore.Cors

В режиме Configure:

        app.UseCors(builder =>
                builder.WithOrigins("http://some.origin.com"));