Политика CORS - ответ на предполетный запрос

Я настраиваю политику CORS в своем веб-приложении .NET Core 3.1, но получаю сообщение об ошибке

Access to XMLHttpRequest at 'http://10.10.100.60/api/api/values/getmyorders?toOrder=false&uId=8c3d745b-78b7-47ed-ac93-310fe61b8daf' from origin 'http://10.10.100.66:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Раньше я никогда не сталкивался с этой ошибкой перед полетом. Вот как выглядит мой Startup

public void ConfigureServices(IServiceCollection services)
        {
         //code shortened for brevity
         services.AddCors();
        }

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddProvider(new Log4NetProvider("log4net.config", true));
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                // 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.UseCors(x => x
                .AllowAnyOrigin()
                .AllowAnyMethod()
                .AllowAnyHeader()
                .AllowCredentials());

            app.UseAuthentication();
            app.UseHttpsRedirection();
            app.UseMvc();
        }

Я также пробовал использовать другие методы CORS, такие как CORS с именованной политикой и промежуточным программным обеспечением, а также политикой по умолчанию, но я все равно получаю ту же ошибку предполетной проверки. Любые предложения о том, как мне действовать?


person Cucko    schedule 05.11.2020    source источник
comment
Вы случайно не используете сервер идентификации 4? у вас есть аутентификация с открытым идентификатором подключения?   -  person nalnpir    schedule 06.11.2020
comment
Просто подумайте, может ли это быть из-за app.UseHttpsRedirection (), клиентский запрос находится на http и может быть перенаправлен на https, когда он достигает сервера из-за app.UseHttpsRedirection ().   -  person Ramesh Kanjinghat    schedule 06.11.2020
comment
Нет, я не использую сервер идентификации - @nalnpir Я тоже подумал об этом, я удалил app.UseHttpsRedirection(), и появляется та же ошибка - @RameshKanjinghat   -  person Cucko    schedule 06.11.2020


Ответы (1)


Вот что у меня сработало несколько часов спустя.

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

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            app.UseCors("AllowAllHeaders");
            app.UseAuthentication();
            app.UseHttpsRedirection();
            app.UseMvc();
        }

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

person Cucko    schedule 06.11.2020