症状

当使用Load方法 XMLDOM 对象模型的同步加载通过 SSL 连接的客户端计算机上的可扩展标记语言 (XML) 文档时,该方法将失败,出现错误 0x800c0007,INET_E_DATA_NOT_AVAILABLE 返回值。

原因

该文件没有缓存在客户端计算机,则会发生此问题。有几个原因为什么不能缓存文件:

  • 用户可以选择在Internet 选项对话框中的高级选项卡上的不将加密的页存盘复选框。

  • 服务器发送 Pragma:no-缓存的控件: 没有-缓存标头。

  • 如果您使用的 Microsoft 互联网信息服务器 (IIS),内容过期选项设置为立即过期,将发送无缓存标头以及过期: 0http 标头。

解决方案

要解决此问题,请执行以下步骤:

  1. 在 Internet Explorer 中,在工具菜单上,单击Internet 选项。在高级选项卡上,清除不将加密的页存盘复选框。

  2. 请确保服务器不会发送无缓存的标头。

  3. 在 IIS 中,Microsoft 管理控制台 (MMC) 管理单元中,右键单击 XML 文件。在HTTP 标头选项卡中,请关闭内容过期选项。

状态

Microsoft 已经确认这是在本文开头部分列出的 Microsoft 产品中的漏洞。

更多信息

重现问题的步骤

  1. 在 Internet Explorer 中,在工具菜单上,单击Internet 选项。在高级选项卡上,清除不将加密的页存盘复选框。

  2. 创建名为 Test.html,一个 HTML 文件,然后粘贴以下代码:

    <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. 在您的 Web 服务器上的安全文件夹保存 Test.html。

  4. 创建名为 Test.xml,新的 XML 文件,然后粘贴以下代码:

    <?xml version='1.0' ?><BOOKLIST><BOOK><CATEGORY>Fiction</CATEGORY><TITLE>The Snow Leopard</TITLE><AUTHOR>Desmond Bagley</AUTHOR></BOOK></BOOKLIST>
  5. 在您的 Web 服务器上的安全文件夹保存 Test.xml。

  6. 在 Internet Explorer 浏览到 Test.html,,然后单击加载 XML。您将收到错误 0x800c0007。

参考

XML 的详细信息,请参阅 Microsoft 开发人员网络 (MSDN) 的以下文章:

有关为 Microsoft Internet Explorer 开发基于 Web 的解决方案的详细信息,请访问下面的 Microsoft 网站:

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。