GWT-RPC e a infame exceção esporádica “StatusCodeException: 0” revisitada
Meu problema é oinfame "StatusCodeException: 0" problema acontecendo ao usarGWT 2.6.1 ao acessar a página via subdomíniohttps://sub.site.com/
.
Agora, isso acontece bastanteesporadicamente paraum cliente usando o IE11 eNão consigo reproduzir isso de vários computadores distintos usando o IE11, IE10, IE9 ou IE8 (para não falar do Chrome ou Firefox).
Acessando exatamente o mesmo aplicativo da Web a partir dehttps://site.com/
parece funcionar bem para esse cliente.
Obviamente, isso me levou a concluir que estou tendo problemas comPolítica de Mesma Origem.
O que é estranho, porém, é que meuwebapp é projetado da maneira quesem domínio cruzado ousubdomínio cruzado pedidos são feitos. O mesmo vale parasem protocolo cruzado tambémsem porta cruzada solicitações de. Em outras palavras,Política de Mesma Origem não é violado nesta situação. Como confirmação, posso fornecer a seguinte prova:
Enquanto estiver no site do cliente, vicomo isso é reproduzido: cliente começausando aplicativo etudo funciona bem - todos os pedidos estão retornando resposta normalmente. Então,depois de alguns minutos de trabalhar, exatamente omesmos pedidos na mesma página (sem recarregamentos)começa a falhar comStatusCodeException: 0.
Basicamente, amboshttps://sub.site.com
ehttps://site.com
aponta para o mesmo IP, e háapenas um aplicativo da Web Tomcat servindo exatamente os mesmos recursos, tanto parahttps://sub.site.com
ehttps://site.com
.
Outra prova seria a base de código do próprio módulo GWT: lá eu uso apenas uma instância de um serviço chamadoDashboardService
:
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;
}
}
=================================== EDIT ============== ======================
Depois de procurar no console a localização do cliente, o erro sempre foi o seguinte:
SCRIPT7002: XmlHttpRequest: erro de rede 0x2ee4, ...
então parece que isso não tem nada a ver comPolítica de Mesma Origem, porque conformeEste artigo é descrito comoERROR_INTERNET_INTERNAL_ERROR An internal error has occurred.
É uma pena, mas eu encontrei apenas 2 menções deste erro que não foram resolvidas:Erro no IE10 eErro no IE11.
Eu suponho que o cliente provavelmente esteja acessando o site por meio de algum proxy que altera ligeiramente as solicitações e o IE não pode lidar com elas.
Questão 1: alguém sabe como posso simular ou reproduzir o erro mencionado localmente?
Questão 2: alguém sabe como esse problema pode ser resolvido com graça?
Questão 3: está tudo bem em simplesmente tentar novamente a solicitação, ou esta solicitação pode ter chegado ao servidor e modificá-lo; portanto, tentar novamente pode produzir modificações duplicadas?
Tentará configurar o proxy de encaminhamento para simular a possível configuração do cliente para pelo menos reproduzir o erro mencionado ...
Agradeço imensamente qualquer ajuda!