Ошибка CORS при использовании веб-API ASP.NET Core 1.1 из приложения IONIC (Angular)

Я создал веб-API ASP.NET Core 1.1, который используется приложением Angular2 (IONIC). В начале проекта мы получали ошибки CORS, которые после некоторых модификаций веб-API мы смогли устранить. Сегодня утром я обновил наш живой веб-API с некоторыми изменениями, которые я сделал за последнюю неделю, и по той или иной причине мы снова получаем ошибку CORS (когда приложение Angular использует живой веб-API - оно отлично работает, когда мы подключаемся к Веб-API, работающий на моем локальном хосте с другого ПК в локальной сети). Ошибка:

XMLHttpRequest не может загрузить http://inspections.propworx.co.za/api/inspections < / а>. Ответ на предполетный запрос не проходит проверку контроля доступа: на запрошенном ресурсе отсутствует заголовок Access-Control-Allow-Origin. Следовательно, к источнику 'http://192.168.1.100:8100' доступ запрещен.

В моем Web API Startup.cs есть следующее:

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

и это:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    app.UseCors("SiteCorsPolicy");
    ...
}

В обоих случаях они находятся перед services.AddMvc () и app.UseMvc соответственно. Но все равно не работает. Я пробовал добавить

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

в ConfigureServices сразу после services.AddCors, но безрезультатно. Я пробовал добавить:

[EnableCors("SiteCorsPolicy")]

в верхнюю часть моих контроллеров, но тоже не помогло.

Это сработало, и я не знаю, что я мог сделать, но сейчас это не работает: / Есть идеи у кого-нибудь? Спасибо...


person Fabricio Rodriguez    schedule 26.07.2017    source источник
comment
Привет, user1900799, у меня есть вопрос, который я хочу знать при создании ионного приложения, которое использует службу WebApi, должен ли я поместить проект Ionic в ту же папку, что и проект Web Api, или два проекта разделены ???   -  person Haytham    schedule 21.11.2017


Ответы (2)


Проблема заключалась в том, что не было файла Web.config ... ASP.Net Core, похоже, не создает его для веб-API, но это необходимо для CORS ...

person Fabricio Rodriguez    schedule 02.08.2017

Несколько дней назад я столкнулся с подобной проблемой, и вот как я ее исправил. При вызове веб-API из angular обязательно добавьте заголовки ниже.

let headers = new Headers({'Content-Type': 'application/json'});
headers.append('Access-Control-Allow-Origin', '*');
headers.append('Accept', 'application/json');
person Rajeev Ranjan    schedule 26.07.2017
comment
Спасибо за ответ Раджив. Я попросил внешнего разработчика добавить эти два заголовка. К сожалению, мы все еще получаем ту же ошибку :( - person Fabricio Rodriguez; 26.07.2017