.Net Core / Angular 6 - происхождение не разрешено Access-Control-Allow-Origin - PullRequest
0 голосов
/ 26 августа 2018

Мне интересно, почему я получаю сообщение об ошибке «источник не разрешен Access-Control-Allow-Origin» при попытке отправить данные из внешнего интерфейса в внутренний.На внешней стороне я использую угловой 6, а на внутренней стороне я использую Asp.Net Core 2.1 (web api).Я установил все как они сказали в этой статье Microsoft:

https://docs.microsoft.com/pl-pl/aspnet/core/security/cors?view=aspnetcore-2.1

Но это все еще не работает.Я не знаю, это какая-то проблема с настройкой углового приложения или я просто что-то здесь не так делаю.

Работа с сервером: https://localhost:5001/

Работа с сервером: https://localhost:4200/

.net основное приложение - startup.cs

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(options => options
        .AddPolicy("AllowSpecificOrigin", p =>
            p.WithOrigins("https://localhost:4200")
                .AllowAnyMethod()
                .AllowCredentials()
                .AllowAnyHeader()));

    services.AddResponseCaching();

    services.AddMvc();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment()) {
        app.UseDeveloperExceptionPage();
    }
    else {
        app.UseExceptionHandler("/Error");
        app.UseHsts();
    }

    app.UseHttpsRedirection();

    app.UseCors("AllowSpecificOrigin");

    app.UseResponseCaching();

    app.UseMvc();
}

Я также пытался использовать атрибут [EnableCors ("AllowSpecificOrigin")] на контроллере, который выдает мне эту ошибку, но все жене работает.Я не уверен, стоит ли писать, но все мои методы HttpGet работают без проблем.Так что это не работает правильно только для HttpPost.Самое странное, что вчера все работало без каких-либо проблем, не было внесено никаких изменений в конфигурацию cors и т. Д., И сегодня не может подключить интерфейс к стороне сервера.

PS.Я также написал это в startup.cs в разделе services.AddMvc (), но это также не помогло:

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

enter image description here enter image description here

Ответы [ 2 ]

0 голосов
/ 26 августа 2018

Я проверил логи, и это была проблема в ядре ef. Вчера я создал EF Migrations в проекте, и когда он генерирует базу данных, он создает два ненужных уникальных ключа для свойств. Ошибка в журнале:

SQLite Error 19: 'UNIQUE constraint failed: Expense.FromUserId'.

Я удалил эти две строки в методе OnModelCreating в DbContext (это создавало дополнительное уникальное ограничение), и теперь все работает нормально:

modelBuilder.Entity<Expense>().HasOne(x => x.FromUser).WithOne();
modelBuilder.Entity<Expense>().HasOne(x => x.ToUser).WithOne();

Странно, что в браузере я получаю сообщение об ошибке «Происхождение не разрешено Access-Control-Allow-Origin». Кто-нибудь может это объяснить?

0 голосов
/ 26 августа 2018

попробуй использовать Cors

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        .......



        app.UseCors(cfg => { cfg.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin().WithExposedHeaders("X-Metadata"); });
        app.UseAuthentication();
        app.UseMvc();
    }
}
...