Angular 7.2 Метод удаления HttpClient не работает, вместо этого отправьте метод Options - PullRequest
0 голосов
/ 25 апреля 2019

Я взаимодействую с Laravel API из компонента Angular 7.2, все методы работают нормально, кроме удаления, я вижу через консоль сетевой активности Firefox, что при запуске функции запрос отправляется методом OPTIONS.

Это мой метод обслуживания:

elimina( id:number ) {
return this._http.delete( this.apiFMX + '/users/' + id );}

И в моем компоненте:

eliminaElemento( id:number ) {
this.dataService.elimina( id ).subscribe();
this.ruta.navigateByUrl( '/fmx-listado' );}

Но это не работает, здесь вывод консоли:

введите описание изображения здесь

Дополнительно Я добавил Cors Middleware в свой Laravel API.Кроме того, если запрос редактируется в консоли Firefox с обновлением OPTIONS на метод DELETE, он работает.

Любое предложение?

Спасибо за совет.

Здесь два изображенияКонсоль Firefox:

Сетевая активность

Как видите, он остается методом OPTIONS (отправленным браузером), но если я отредактирую запрос и повторно отправлю его, обновлениеметод DELETE, он работает!

Предупреждения

Это предупреждение отображается, когда событие запускается, повторяю, только при использовании метода DELETE, PUT и GET работает правильно.

Это мое промежуточное ПО:

  public function handle($request, Closure $next)
{
    return $next( $request )->header( 'Access-Control-Allow-Origin' , '*' )
      ->header( 'Access-Control-Allow-Methods' , 'POST, GET, OPTIONS, PUT, DELETE' )
      ->header( 'Access-Control-Allow-Headers' , '*' );
}

Спасибо.

1 Ответ

0 голосов
/ 25 апреля 2019

Это спецификации Http, не связанные с Angular


Решение (выберите один)

  1. Добавьте свой домен к Access-Control-Allow-Origin в вашемзаголовки ответа

enter image description here

// your domain : 192.168.30.104 
Access-Control-Allow-Origin: http://192.168.30.104
Угловое приложение и API в одном домене

Причина проблемы

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

В CORS отправляется предварительный запрос с методом OPTIONS, чтобы сервер мог ответить, допустимо ли отправить запрос с этими параметрами.

В частности, запрос предварительно выданесли выполняется любое из следующих условий:

Если в запросе используется любой из следующих методов:

  • PUT
  • DELETE
  • CONNECT
  • ОПЦИИ
  • TRACE
  • PATCH

https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/OPTIONS#Preflighted_requests_in_CORS

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