GWT-RPC и печально известное спорадическое исключение «StatusCodeException: 0» вновь
Моя проблема заключается впечально известная "StatusCodeException: 0" проблема происходит при использованииGWT 2.6.1 при доступе к странице через поддоменhttps://sub.site.com/
.
Теперь это происходит довольноспорадически заодин клиент используя IE11 иЯ не могу воспроизвести это с нескольких разных компьютеров, использующих IE11, IE10, IE9 или IE8 (не говоря о Chrome или Firefox).
Доступ к тому же веб-приложению изhttps://site.com/
кажется, работает нормально для этого клиента.
Это, очевидно, привело меня к выводу, что у меня проблемы сПолитика единого происхождения.
Что странно то, что мойвеб-приложение разработано таким образом, чтобынет междоменной или жекросс-подобласть запросы сделаны. То же самое касаетсянет кросс-протокола такженет кросс-порт Запросы. Другими словами,Политика единого происхождения не нарушается в этой ситуации. В подтверждение этого я могу предоставить следующие доказательства:
Находясь на сайте клиента, я виделкак это воспроизводится: покупатель начинаетсяиспользуя приложение а такжевсе отлично работает - все запросы возвращают ответ нормально. Затем,через несколько минут работы, именноте же запросы на той же странице (без перезагрузок)начинает терпеть неудачу сStatusCodeException: 0.
В основном обаhttps://sub.site.com
а такжеhttps://site.com
указывает на тот же IP, и естьтолько одно веб-приложение Tomcat обслуживая одни и те же ресурсы как дляhttps://sub.site.com
а такжеhttps://site.com
.
Другим доказательством может служить кодовая база самого модуля GWT: там я использую только один экземпляр одной службы под названиемDashboardService
:
public class DashboardModule extends EntryPoint implements IDashboardModule {
private final DashboardServiceAsync dashboardService = createDashboardService();
@Override
public void onModuleLoad() {
// loading of module elements
// dashboardService is passed as a parameter so only one instance is used
}
/**
* PLEASE SEE QUESTION #1 BELOW CODE SNIPPET
*/
private static final String DASHBOARD_REQUEST_URL = "request";
private static DashboardServiceAsync createDashboardService() {
final DashboardServiceAsync service = GWT.create(DashboardService.class);
((ServiceDefTarget) service).setServiceEntryPoint(DASHBOARD_REQUEST_URL);
return service;
}
}
=================================== РЕДАКТИРОВАТЬ ============== ======================
После просмотра в консоли на месте клиента ошибка всегда была следующей:
SCRIPT7002: XmlHttpRequest: ошибка сети 0x2ee4, ...
так что, похоже, это не имеет ничего общего сПолитика одного происхожденияпотому что согласноЭта статья это описано какERROR_INTERNET_INTERNAL_ERROR An internal error has occurred.
Жаль, но я нашел только 2 упоминания об этой ошибке, которые не были решены:Ошибка под IE10 а такжеОшибка под IE11.
У меня есть предположение, что клиент очень вероятно получает доступ к сайту через некоторый прокси, который немного меняет запросы, и IE не может их обработать.
Вопрос 1: Кто-нибудь знает, как я могу симулировать или воспроизвести упомянутую ошибку локально?
Вопрос 2: Кто-нибудь знает, как эта проблема может быть изящно решена?
Вопрос 3: Можно ли просто повторить запрос, или этот запрос достиг сервера и изменить его, поэтому повторная попытка может привести к дублированию изменений?
Попробуем настроить прокси-сервер переадресации, чтобы имитировать возможную настройку клиента, чтобы хотя бы воспроизвести упомянутую ошибку ...
Я очень ценю любую помощь!