блокировка приложений .net core 5 из-за политики CORS

#asp.net-core-webapi

#asp.net-core-webapi

Вопрос:

Я создал api с использованием .net core 5.0, но независимо от того, что я делаю, он, похоже, блокирует мой запрос к нему, выдавая ошибку

     has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
 

мой код в моем startup.cs

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllers();
        services.AddCors(options =>
        {
            options.AddPolicy("AllowAnyCorsPolicy", policy => policy.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin());
        });
        services.AddTransient<IChatLog, LogsData>(provider => new LogsData());
    }

    
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseRouting();
        app.UseCors();
        app.UseAuthorization();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });
    }
 

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

Кто-нибудь знает, что не так?

Ответ №1:

Потому app.UseCors() что не указано имя политики. Вы можете добавить имя AllowAnyCorsPolicy .

 public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        //...
        app.UseCors("AllowAnyCorsPolicy");
        //...
    }
 

Комментарии:

1. @andrew slaughter, может ли этот ответ вам помочь?

Ответ №2:

Используйте этот синтаксис:

 services.AddCors(o => o.AddPolicy("AllowAnyCorsPolicy", builder =>
            {
                builder.AllowAnyOrigin()
                       .AllowAnyMethod()
                       .AllowAnyHeader();
            }));
 

и это тоже:

   app.UseCors("AllowAnyCorsPolicy");