Как обойти ClientAbortException на iOS12 с использованием XHR (AJAX)? - PullRequest
0 голосов
/ 28 июня 2019

Я разрабатывал веб-приложение на основе Java с интерфейсом JavaScript, и сценарий входа выглядит следующим образом:
1. Введите имя пользователя и пароль;
2. Получить уведомление о другом заявлении;
3. Переключитесь на это приложение и подтвердите запрос аутентификации;
4. Вернитесь в браузер, и вы вошли в систему.

Тесты были хороши на Android, но при использовании iPhone у меня возникла проблема, когда клиент (браузер) отключает HTTP-запрос и, следовательно, не может получить HTTP-ответ (вы всегда можете выполнить сценарий, но ничего не происходит) и когда я просматриваю журналы своего сервера, я нахожу это « ClientAbortException: сброс соединения ». ( NOT" сброс соединения по peer " и NOT" SocketException ")

Во всяком случае, я искал в интернете и обнаружил, что это проблема iOS 12 (и еще не исправлена ​​в iOS 13), и Apple признается в ошибке. Мы пробовали iOS Safari, Google Chrome, Firefox и другие браузеры, и у всех них была та же проблема.

Я даже пытался отслеживать свои запросы XHR, используя идентификатор на шаге 1, связать этот идентификатор с данными на сервере, а затем повторно использовать тот же идентификатор на шаге 4, чтобы вспомнить связанные данные, и я все еще получил тот же результат.

Во время исследования я обнаружил, что основной причиной этой проблемы является то, что, запустив iOS12, Apple решила отключить фоновую работу для приложений (проблемы с оптимизацией или что-то в этом роде), что также влияет на браузеры, отправляющие запросы XHR в фоновом режиме. (Решение доступно для разработчиков iOS)

Примечание: мы нашли другой браузер с именем " iBrowser - Private Web Browser ", у которого не было этой проблемы.

Итак, мой вопрос: если кто-нибудь может мне помочь, что делает HTTP-сессию открытой между этим браузером и сервером? В чем может быть разница между ним и другими браузерами? И как я могу заставить его работать в любом другом браузере?

...