Проблемы с CORS Response для предварительной проверки в do tnet core 3.1 - PullRequest
0 голосов
/ 17 апреля 2020

Я сталкиваюсь с этой проблемой:

Доступ к XMLHttpRequest по адресу http://localhost: 5000 / api / surpactemp / 'origin' http://localhost: 4200 'было заблокировано политикой CORS: Ответ на запрос предварительной проверки не проходит проверку контроля доступа: Перенаправление не разрешено для запроса предварительной проверки.

На стороне сервера я пробовал этот способ и не сработало:

.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod()

Я пробовал несколько способов решить проблему, используя справку Microsoft (ниже), но пока безуспешно. Кроме того, я уже пытался не передавать объект заголовков на Angular, затем я получаю сообщение об ошибке:

Нет заголовка 'Access-Control-Allow-Origin' на запрошенном

Среда :

  • Do tnet Core 3.1
  • Angular 8

Backend : Startup.cs

//ConfigureServices
services.AddCors(options =>
{
    options.AddPolicy(name: "CorsPolicy",
        builder => builder.WithOrigins("http://localhost:4200")
                          .WithHeaders(HeaderNames.ContentType, "application/json")
                          .WithMethods("PUT", "DELETE", "GET", "OPTIONS", "POST")        
        );
});

//Configure
 app.UseHttpsRedirection();

 app.UseRouting();

 app.UseCors("CorsPolicy");

 app.UseAuthorization();

 app.UseEndpoints(endpoints =>
 {
     endpoints.MapControllers();
 });

Frontend : form-service.ts

httpOptions = {
    headers: new HttpHeaders({
      // 'Content-Type': 'application/json',
      // 'withCredentials': 'false',
      // 'Access-Control-Allow-Origin': '*',
      'Content-Type': 'application/json'
    })
};

return this.httpClient.post('http://localhost:5000/api/surpactemp/', JSON.stringify(data.path), this.httpOptions);

Ссылка: https://docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-3.1#preflight -запросы

Ответы [ 3 ]

0 голосов
/ 17 апреля 2020
services.AddCors(); // Make sure you call this previous to AddMvc
services.AddMvc();       

 app.UseCors(
     options => options.WithOrigins("http://localhost:4200","https://localhost:4200")
                .AllowAnyHeader().AllowAnyMethod().AllowCredentials()
             );

Отредактировано:

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

            app.UseCors(
         options => options.WithOrigins("http://localhost:4200", "https://localhost:4200").AllowAnyHeader().AllowAnyMethod().AllowCredentials());




            app.UseHttpsRedirection();
            app.UseRouting();
            app.UseAuthorization();


            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });

        }     
0 голосов
/ 21 апреля 2020

Я обнаружил проблему, метод app.UseHttpsRedirection() требует https клиентов.

Вкл. Startup.cs при Configure метод:

//app.UseHttpsRedirection(); <-- Commented this line

app.UseRouting();

app.UseCors();

app.UseAuthorization();

0 голосов
/ 17 апреля 2020

Вы можете использовать настройку прокси.

посмотрите это https://www.youtube.com/watch?v=D9oFe6rHjpY

...