Сбой синхронного запроса Ajax в Chrome

Последняя версия Chrome остановила синхронные вызовы Ajax? Мы получаем ошибку при выполнении синхронных вызовов Ajax. Проблема появилась после того, как мы обновили до последней версии Chrome - 73.0.3683.103. Синхронные вызовы отлично работают на Firefox и IE на данный момент. Мы получаем ошибку ниже

сообщение: "Не удалось выполнить" send "для" XMLHttpRequest ": не удалось загрузить" Path... ": синхронный XHR при закрытии страницы". имя: "NetworkError"

Может кто-нибудь предложить решение, чтобы заставить работать синхронные вызовы Ajax. У меня есть некоторые функциональные возможности, где мне нужно наверняка положиться на синхронный вызов.

Ответ 1

Да, в Chrome они недавно запретили синхронный ajax во время событий конца страницы (например, beforeunload и unload). Вы просто не можете больше этого делать в Chrome. Обновление: Вы можете снова, в v73 и v74, но это запланировано (пока), чтобы уйти снова в v75, если не будет больше откат. Следите за забавой в этом выпуске (спасибо, patmortech, что нашли эту проблему).

Современная альтернатива заключается в использовании sendBeacon, который позволяет браузеру перемещаться от страницы, в то же время давая вам возможность сообщить серверу, что происходит. Это не задерживает закрытие страницы. Но это только POST, и, поскольку он не задерживает удаление страницы, варианты использования, основанные на задержке удаления страницы, не будут работать с ним.

Ответ 2

У меня та же проблема в Chrome. Я установил бета-версию Chrome (v74), и эта проблема исчезла (с помощью Ubuntu 18.04).

Ответ 3

Спасибо вам обоим - Краудеру и Чарлиэтфлю. Использование Beacon решило проблему.

В случае, если кто-то ищет решение, можете следовать этому - http://qnimate.com/sending-data-to-server-on-page-unload/