Нет «Access-Control-Allow-Origin» после развертывания приложения - PullRequest
0 голосов
/ 24 марта 2020

Я развернул одно и то же приложение на 2 серверах (тестирование и производство) на IIS.

На первом сервере он работает отлично, а на другом - нет.

I могу подключиться, получить данные, а также добавить что-нибудь ... но я не могу удалить или обновить.

Я получаю эту ошибку:

Доступ к XMLHttpRequest по адресу 'from origin' 'заблокировано политикой CORS: в запрошенном ресурсе отсутствует заголовок' Access-Control-Allow-Origin '.

Мой запуск конфигурация:

//ConfigureServices
   services.AddCors(o => o.AddPolicy("AllowSpecificOrigin", builder =>
        {
            builder.WithOrigins("*")
                   .AllowAnyMethod()
                   .AllowAnyHeader()
                   .AllowCredentials();
        }));

        services.AddDistributedMemoryCache();
        services.AddMvc().AddSessionStateTempDataProvider();

 //Configure

        if (env.IsDevelopment())
        {
            app.UseBrowserLink();
            app.UseDeveloperExceptionPage();
            app.UseSwagger();
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
            });
        }
        else
        {
            app.UseExceptionHandler("/Error");
        }
        loggerFactory.AddFile("Logs/API-{Date}.txt");
        app.UseStaticFiles();



        // app.UseCors(builder => builder.AllowAnyOrigin());

        app.UseSwagger();
        app.UseSwaggerUI(c =>
        {
            c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
        });
        app.UseCors("AllowSpecificOrigin");
        app.UseAuthentication();
        app.UseSession();
        app.UseMvc();

любая помощь?

Ответы [ 2 ]

0 голосов
/ 24 марта 2020

Возможно, вы захотите взглянуть на это.

В вашем файле Startup.cs

 // This method gets called by the runtime. Use this method to add services to the container.
  public void ConfigureServices(IServiceCollection services)
  {
       services.AddCors(cfg =>
       {
            cfg.AddDefaultPolicy(policy =>
            {
                 policy.WithOrigins("list of origins to allow here")
                 .AllowAnyHeader()
                 .AllowAnyMethod()
                 .AllowCredentials()
                 .SetIsOriginAllowed((_) => true)
                 .SetIsOriginAllowedToAllowWildcardSubdomains();
            });
       });
  }

 public void Configure(IApplicationBuilder app)
  {
     app.UseCors();
     app.UseMvc(routes =>
       {
            routes.MapRoute(
                 name: "default",
                 template: "{controller=Home}/{action=Index}/{tag?}");
       });
  }

Убедитесь, что Cors вызывается до вызова MVC.

Во-вторых: Сделайте это

Проверьте метод аутентификации, используемый в IIS, убедитесь, что он не установлен в Basi c Аутентификация. Я скажу, что вы отключаете проверку подлинности IIS.

Чтобы отключить проверку подлинности IIS

Для общесерверного открытого диспетчера IIS> Нажмите СЕРВЕРНОЕ ИМЯ на левой панели> Выбрать проверку подлинности в разделе Раздел IIS> Выбор типа проверки подлинности для отключения

Для IIS-менеджера в рамках всего сайта> Нажмите «Сайты»> Выберите свой сайт> Выбрать раздел «Проверка подлинности в разделе IIS»> Выберите тип проверки подлинности для отключения

Надеюсь, это поможет .

С уважением

0 голосов
/ 24 марта 2020

попробуйте это в ConfigureServices

public void ConfigureServices(IServiceCollection services)
{
 services.AddCors ();
}

, затем в методе Configure

public void Configure(IApplicationBuilder app) 
{
 app.UseCors (x => x.SetIsOriginAllowed (options => _ = true).AllowAnyMethod ().AllowAnyHeader ().AllowCredentials ());
 }

надеюсь, эта помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...