Error: Método de carga no se puede cargar documentos XML en conexión SSL


Síntomas


Cuando utiliza el método Load del modelo de objeto XMLDOM sincrónicamente cargar un documento de lenguaje de marcado Extensible (XML) en un equipo cliente sobre una conexión SSL, el método falla con error 0x800c0007 y el INET_E_DATA_NOT_AVAILABLE de valor devuelto.

Causa


Este problema se produce cuando el archivo no se almacena en caché en el equipo cliente. Hay varios motivos de por qué el archivo no se puede almacenar en caché:
  • El usuario selecciona la casilla de verificación no guardar las páginas cifradas en el disco , en la ficha Avanzadas del cuadro de diálogo Opciones de Internet .
  • El servidor envía un pragma-cache o Cache-control: no-encabezado cache.
  • Si está utilizando Microsoft Internet Information Server (IIS), la opción de caducidad de contenido se establece en caducar inmediatamente, que envía encabezados no-cache, así como el Expires: 0 encabezado HTTP.

Resolución


Para resolver este problema, siga estos pasos:
  1. En Internet Explorer, en el menú Herramientas , haga clic en Opciones de Internet. En la ficha Avanzadas , desactive la casilla de verificación no guardar las páginas cifradas en el disco .
  2. Asegúrese de que el servidor no envía encabezados no-cache.
  3. En IIS, en el complemento Microsoft Management Console (MMC), haga clic en el archivo XML. En la ficha Encabezados HTTP , desactive la opción de caducidad del contenido.

Estado


Microsoft ha confirmado que se trata de un error en los productos de Microsoft que se enumeran al principio de este artículo.

Más información


Pasos para reproducir el comportamiento

  1. En Internet Explorer, en el menú Herramientas , haga clic en Opciones de Internet. En la ficha Avanzadas , desactive la casilla de verificación no guardar las páginas cifradas en el disco .
  2. Cree un archivo HTML denominado Test.html y, a continuación, pegue el código siguiente:
    <HTML><BODY><INPUT type=button onclick=loadmyxml() value="Load XML"><SCRIPT>function loadmyxml(){var XMLObj = new ActiveXObject("Microsoft.XMLDOM")XMLObj.async = false;XMLObj.load('https://localhost/secure/test.xml'); if (XMLObj.parseError.errorCode != 0)alert("Error loading XML file : " + XMLObj.parseError.reason);elsealert (XMLObj.xml);}</script></BODY></HTML>
  3. Guardar Test.html en una carpeta segura en el servidor Web.
  4. Crear un nuevo archivo XML llamado Test.xml y, a continuación, pegue el código siguiente:
    <?xml version='1.0' ?><BOOKLIST><BOOK><CATEGORY>Fiction</CATEGORY><TITLE>The Snow Leopard</TITLE><AUTHOR>Desmond Bagley</AUTHOR></BOOK></BOOKLIST>
  5. Guardar Test.xml en una carpeta segura en el servidor Web.
  6. En Internet Explorer, vaya a Test.html y, a continuación, haga clic en Cargar XML. Recibe el error 0x800c0007.

Referencias


Para obtener más información sobre XML, consulte el artículo siguiente en Microsoft Developer Network (MSDN):Para obtener más información acerca de cómo desarrollar soluciones basadas en Web para Microsoft Internet Explorer, visite los siguientes sitios Web de Microsoft: