Проблема
Получение:
введите описание изображения здесь
Настройка
Трудно точно указать причину и предоставить подробности. Вкратце, существует приложение 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();