バグ: SSL 接続経由で XML ドキュメントをロードするのには Load メソッドが失敗した場合します。

適用対象: なし

現象


XMLDOM オブジェクト モデルのLoadメソッドを使用して SSL 接続経由でクライアント コンピューター上で、拡張マークアップ言語 (XML) ドキュメントを同期的にロードしてメソッドがエラー 0x800c0007 で失敗した、INET_E_DATA_NOT_AVAILABLE の値を返します。

原因


この問題は、ファイルがクライアント コンピューターにキャッシュされていない場合に発生します。ファイルがキャッシュされない理由は、いくつか考えられます。
  • ユーザーは、[インターネット オプション] ダイアログ ボックスの [詳細設定] タブで [暗号化されたページをディスクに保存しない] チェック ボックスを選択します。
  • サーバーに送信する Pragma:no-キャッシュまたはキャッシュ-コントロール: なし-キャッシュ ヘッダー。
  • Microsoft インターネット インフォメーション サーバー (IIS) を使用する場合、コンテンツの有効期限に設定されて期限切れ、すぐに期限切れ日時: 0 と同様の no-cache ヘッダーを送信します。http ヘッダーです。

解決方法


この問題を解決するには、次の手順に従います。
  1. Internet Explorer の [ツール] メニューの [インターネット オプションをクリックします。[詳細設定] タブで、[暗号化されたページをディスクに保存しない] チェック ボックスをオフにします。
  2. サーバーがキャッシュなしヘッダーを送信していないことを確認します。
  3. IIS では、Microsoft 管理コンソール (MMC) スナップインでは、XML ファイルを右クリックします。[ HTTP ヘッダー ] タブには、コンテンツの有効期限オプションをオフにします。

状態


Microsoft は、これがこの資料の冒頭に記載されているマイクロソフト製品のバグとして認識しています。

詳細情報


現象の再現手順

  1. Internet Explorer の [ツール] メニューの [インターネット オプションをクリックします。[詳細設定] タブで、[暗号化されたページをディスクに保存しない] チェック ボックスをオフにします。
  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. Test.html をセキュリティで保護されたフォルダーに Web サーバーに保存します。
  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. Test.xml をセキュリティで保護されたフォルダーに Web サーバーに保存します。
  6. Internet Explorer では、Test.html を参照でXML の読み込み] をクリックします。エラー 0x800c0007 が表示されます。

参照情報


XML の詳細については、Microsoft Developer Network (MSDN) に次の資料を参照してください。Microsoft Internet Explorer の Web ベースのソリューションを開発する方法の詳細については、次のマイクロソフト Web サイトを参照してください。