症状
当使用Load方法 XMLDOM 对象模型的同步加载通过 SSL 连接的客户端计算机上的可扩展标记语言 (XML) 文档时,该方法将失败,出现错误 0x800c0007,INET_E_DATA_NOT_AVAILABLE 返回值。
原因
该文件没有缓存在客户端计算机,则会发生此问题。有几个原因为什么不能缓存文件:
-
用户可以选择在Internet 选项对话框中的高级选项卡上的不将加密的页存盘复选框。
-
服务器发送 Pragma:no-缓存的控件: 没有-缓存标头。
-
如果您使用的 Microsoft 互联网信息服务器 (IIS),内容过期选项设置为立即过期,将发送无缓存标头以及过期: 0http 标头。
解决方案
要解决此问题,请执行以下步骤:
-
在 Internet Explorer 中,在工具菜单上,单击Internet 选项。在高级选项卡上,清除不将加密的页存盘复选框。
-
请确保服务器不会发送无缓存的标头。
-
在 IIS 中,Microsoft 管理控制台 (MMC) 管理单元中,右键单击 XML 文件。在HTTP 标头选项卡中,请关闭内容过期选项。
状态
Microsoft 已经确认这是在本文开头部分列出的 Microsoft 产品中的漏洞。
更多信息
重现问题的步骤
-
在 Internet Explorer 中,在工具菜单上,单击Internet 选项。在高级选项卡上,清除不将加密的页存盘复选框。
-
创建名为 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>
-
在您的 Web 服务器上的安全文件夹保存 Test.html。
-
创建名为 Test.xml,新的 XML 文件,然后粘贴以下代码:
<?xml version='1.0' ?><BOOKLIST><BOOK><CATEGORY>Fiction</CATEGORY><TITLE>The Snow Leopard</TITLE><AUTHOR>Desmond Bagley</AUTHOR></BOOK></BOOKLIST>
-
在您的 Web 服务器上的安全文件夹保存 Test.xml。
-
在 Internet Explorer 浏览到 Test.html,,然后单击加载 XML。您将收到错误 0x800c0007。
参考
XML 的详细信息,请参阅 Microsoft 开发人员网络 (MSDN) 的以下文章:
有关为 Microsoft Internet Explorer 开发基于 Web 的解决方案的详细信息,请访问下面的 Microsoft 网站: