PUT, POST, DELETE - запрос отменен - PullRequest
       4

PUT, POST, DELETE - запрос отменен

0 голосов
/ 01 августа 2020

Проблема

Получение:

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

Настройка

Трудно точно указать причину и предоставить подробности. Вкратце, существует приложение Angular + Express. js, MySQL для базы данных, Nginx для прокси-сервера, использующее Docker, чтобы склеить все вместе.

  • Проблема возникает, когда на выполнение запроса требуется ~ 110 + мс.
  • Затрагиваются только методы PUT, POST, DELETE (GET работает нормально).
  • Браузер показывает, что запрос был отменен, но фактический код работает (например, Express. js завершает logi c и обновляет MySQL базу данных).
  • Проверено Chrome и Firefox (так что это не проблема браузера) .

Таким образом, всякий раз, когда используется какая-либо длительная асинхронная задача c (например, setTimeout(() => {}, 1000), запрос в браузере получает статус отмены.

Итак, пытаемся понять вне. Это настройка Express. js? NginX настройка? Angular HttpClient?

Подводя итог, все работает под капотом. Но браузер получает статус отменен, что делает невозможным отследить результат действия и уведомить пользователя о завершении операции.

Обновление

Nginx журнал возвращает:

nginx_1        | 172.18.0.1 - - [01/Aug/2020:12:49:19 +0000] "PUT /api/tags/update HTTP/1.1" 499 0 "http://localhost:8081/tags" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36

Angular Код TypeScript выглядит следующим образом:

this.httpClient
   .put<Tag>(`/api/tags/${slug}`, data)
   .pipe(takeUntil(this.unsubscribe$))
   .subscribe();

1 Ответ

1 голос
/ 01 августа 2020

Вероятно, вы вызываете request.unsubscribe() для наблюдаемого http в хук компоненте ngOnDestroy. Это приводит к "отмене" запроса

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