javascript - IE10/IE11 cancela la solicitud Ajax después de borrar el caché con el error "Error de red 0x2ef3"
post xmlhttprequest (2)
SCRIPT7002: XMLHttpRequest: error de red 0x2ef3, no se pudo completar la operación debido al error 00002ef3
No hay una solución válida en este momento.
Actualización: notado en IE11 también.
Después de más y más investigación, vengo con estos resultados:
- El problema es específico de mi aplicación, no ocurre en Facebook.
- El problema no tiene nada que ver con el número máximo de solicitudes por host (hice una página de muestra que inunde el servidor, IE10 puede manejar hasta 8-10 consultas al mismo tiempo, dentro de mi aplicación también intenté hacer solicitudes ajax en serie , falló también).
- El problema es específico para las solicitudes POST.
- El problema no es específico de la biblioteca JS utilizada (intenté XMLHttpRequest directo desde la consola también falló).
- La falla ocurrió después de que se activaron xhr.send (), xhr.readyState = 4 y xhr.onreadystatechange.
- La falla no está relacionada con ningún tipo de contenido, solicitudes adecuadas o configuración del servidor. Es solo cliente, la página ficticia solicitante fallará, con un XHR mínimo puro, solo xhr.open y xhr.send.
- Sucedió principalmente después de borrar el caché del navegador.
- Hacer la solicitud GET antes del POST no resuelve este problema.
Mis preguntas son:
- ¿Cómo la memoria caché del navegador puede afectar las solicitudes POST ajax?
- ¿Algún cuerpo tiene contacto con desarrolladores de IE para decirnos a qué se ha asignado este error ''Error de red 0x2ef3''?
Por ahora, la solución temporal que estoy haciendo es simplemente volver a intentar por un máximo de 3 veces si el código de estado HTTP era cero. Pero es muy feo porque incluso las solicitudes de carga a veces fallan, y se vuelven lentas para las solicitudes con reintento, a veces tomará 100 ms adicionales.
Pasos para reproducir:
- Asegúrese de que el violín o el proxy esté desactivado.
- http://ie10.laiths.name/#!login
- Abra la consola IE10, elimine la caché de su navegador.
- Pruebe este inicio de sesión no válido: [email protected]/random
- Después de 3-4 veces (borrar-caché / invalid-login) verá este error: SCRIPT7002: XMLHttpRequest: error de red 0x2ef3, no se pudo completar la operación debido al error 00002ef3.
Mi versión de IE:
- Versión de Win7 IE10: 10.0.9200.16618
- Versión de actualización: 10.0.6 (KB2838727)
Por ahora lo estoy resolviendo reintentando un máximo de 3 veces si el browser is IE10
&& Request is POST
&& El HTTP status code is 0
.
Apreciaría si alguien puede ayudarme a eliminar mi fea solución, porque con tal solución, incluso si la solicitud va al servidor y devuelve 0, también intentaré de nuevo (estaba intentando evitar eso midiendo el tiempo entre xhr.send y su devolución de llamada, pero no es confiable), ¿qué pasa si IE10 en comptMode, qué pasa si IE11 tiene el mismo problema, agregue a ese rendimiento, tomará en mi máquina ~ 170ms entre cada reintento.
Esto puede estar sucediendo debido a un problema de certificado de seguridad. Si borra la caché, pierde parte (si no toda) de la información del certificado.
Puede encontrar más información (y una solución alternativa) en http://www.jonnyreeves.co.uk/2013/making-xhr-request-to-https-domains-with-winjs/
Básicamente, dice que debe hacer un GET antes de su solicitud POST para actualizar la información del certificado.
Tuve este problema, una solicitud de publicación de AJAX que devolvió un error de JSON, y finalmente regresó el aborto, con:
SCRIPT7002: XMLHttpRequest: Error de red 0x2ef3
error en la consola. En otros navegadores (Chrome, Firefox, Safari), la misma solicitud exacta de AJAX estaba bien.
La investigación adicional reveló que a la respuesta le faltaba el código de estado, en este caso debería haber sido un error interno de 500.
Esto se estaba generando como parte de una aplicación web C # utilizando la pila de servicios que requiere un código de error para establecerse explícitamente.
IE parecía dejar la conexión abierta, eventualmente la capa de red la cerró y ''abortó'' la solicitud; a pesar de recibir el contenido y otros encabezados.
La actualización de la aplicación web para devolver correctamente el código de estado solucionó el problema.
Quizás hay un problema con la forma en que IE maneja los encabezados en las publicaciones.
¡Espero que esto ayude a alguien!