Я только начинаю работать с веб-службами. Я создал базовое приложение asp.net с угловым интерфейсом.

Я уже добавил CORS в свой веб-сервис startup.cs:

    public void ConfigureServices(IServiceCollection services)
    {
        //services.AddControllersWithViews();
        services.AddControllers();

        services.AddDbContext<BuchverwaltungDbContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

        // In production, the Angular files will be served from this directory
        //services.AddSpaStaticFiles(configuration =>
        //{
        //    configuration.RootPath = "ClientApp/dist";
        //});
        services.AddCors();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        app.UseCors(options =>
        options.WithOrigins("http://localhost:4200/")
        .AllowAnyMethod()
        .AllowAnyHeader());

        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
            //Swagger hier einbauen
        }
        else
        {
            app.UseExceptionHandler("/Error");
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        if (!env.IsDevelopment())
        {
            app.UseSpaStaticFiles();
        }

        app.UseRouting();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller}/{action=Index}/{id?}");
        });

        app.UseSpa(spa =>
        {
            // To learn more about options for serving an Angular SPA from ASP.NET Core,
            // see https://go.microsoft.com/fwlink/?linkid=864501

            spa.Options.SourcePath = "ClientApp";

            if (env.IsDevelopment())
            {
                spa.UseAngularCliServer(npmScript: "start");
            }
        });
    }
}

А вот как я пытаюсь читать книги в угловом Frontend:

getBooks() {
return this.http.get(this.baseURL + "/books")
.toPromise()
.then(res => this.books = res as Book[]);}

Каким-то образом ошибка все еще появляется на консоли:

Доступ к XMLHttpRequest по адресу 'https: // localhost: 44302 / api / books' из источника 'http: // localhost: 4200' заблокирован политикой CORS: заголовок 'Access-Control-Allow-Origin' не присутствует на запрошенном ресурсе.

При открытии моего API в браузере (https: // localhost: 44302 / api / books) все данные отображаются правильно.

-1
manu.kanu 17 Сен 2021 в 13:01

1 ответ

services.AddCors(x => x.AddDefaultPolicy(builder => {
            builder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod();
        }));

Попробуйте использовать это

0
Piotr Szuflicki 17 Сен 2021 в 10:08