Angular 7 Http Client и Asp Core - ошибка Cors - PullRequest
0 голосов
/ 28 мая 2019

1001 *
*

Я застрял с ошибкой в ​​Angular 7. Я делаю почтовый запрос к Asp Core API, передавая объект, и этот API отвечает Ok() другим объектом. Мой код такой:

[HttpPost]
public async Task<IActionResult> UserRegistration(ViewModel viewModel){
    //Ignored code
    return Ok(someObject);
}

Это действие работает (по-видимому) замечательно, оно принимает запрос, разрешает любое необходимое решение и возвращает объект именно так, как мне нужно.
Теперь позволяет Angular-приложению, где у меня есть метод в service.ts, который вызовите API и еще один в component.ts, который использует этот первый метод. Они такие:

//Service
userRegistration(model): Observable<any>{
  return this.http.post(url, model, httpOptions);
}

//Component
saveUser(model){
   this.myService.userRegistration(model).subscribe(
      data => {
         //do something
      },
      error => {
         //show message
      }
   );
}

Дело в том, что Angular успешно вызывает API Asp Core, который правильно сохраняет данные в базе данных, возвращает правильный объект, а затем Angular получает ошибку:

Доступ к XMLHttpRequest в «конечной точке» из источника «источника» был заблокирован политикой CORS: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».

ОШИБКА HttpErrorResponse {заголовки: HttpHeaders, status: 0, statusText: «Неизвестная ошибка», url: «URL», ok: false,…}

Почему выдается ошибка CORS, если API принимает запрос и отвечает на него правильно? Как я могу решить это?

1 Ответ

0 голосов
/ 28 мая 2019

Добавить CORS в startup.cs в бэкэнде

  public void ConfigureServices(IServiceCollection services) 
  {
    services.AddMvc();
    services.Configure<MvcOptions>(options => {
      options.Filters.Add(new CorsAuthorizationFilterFactory("AllowMyOrigin"));
    });
  }

Для получения более подробной информации, следуйте этой статье

...