web-dev-qa-db-ja.com

エラー:「制限されたURIへのアクセスが拒否されました」

制限付きURIへのアクセスが拒否されました "コード:" 1012 [Break On This Error]

xhttp.send(null);

function getXML(xml_file) {

  if (window.XMLHttpRequest) {

    var xhttp = new XMLHttpRequest();  // Cretes a instantce of XMLHttpRequest object
  }
  else {

    var xhttp = new ActiveXObject("Microsoft.XMLHTTP");  // for IE 5/6
  }

  xhttp.open("GET",xml_file,false);  
  xhttp.send(null);  

   var xmlDoc = xhttp.responseXML; 

   return (xmlDoc);
}

JavaScriptを使用してXMLファイルからデータを取得しようとしています。 FirefoxでFirebugをテストおよびデバッグするために使用しています。

上記のエラーは私が得ているものです。以前同じように使用した他の場所でも機能しますが、なぜここで奇妙な動作をするのですか?

なぜそれが起こっているのか誰かが私を助けることができますか?

更新:

http://jquery-howto.blogspot.com/2008/12/access-to-restricted-uri-denied-code.html

問題の原因を説明しているこのリンクを見つけました。しかし、私は与えられた解決策が誰かが詳しく説明できることを意味するのかわかりませんでしたか?

10
Bala

これのもう1つの考えられる原因は、ファイルシステムで直接.htmlファイルを操作している場合です。たとえば、ブラウザで次のURLを使用してアクセスしている場合:C:/Users/Someguy/Desktop/MyProject/index.html

その後、ajaxリクエストを行う必要がある場合、ファイルシステムへのajaxリクエストが制限されているため、ajaxリクエストは失敗します。これを修正するには、ローカルホストがC:/Users/Someguy/Desktop/MyProjectを指すWebサーバーをセットアップし、http://localhost/index.htmlからアクセスします。

21
Kevin B

同一生成元ポリシー に違反しているようです。

サブドメイン、異なるポート、異なるプロトコルは異なるドメインと見なされます。

13
epascarello

XMLを提供するサーバーサイドスクリプトに_Access-Control-Allow-Origin:*_ヘッダーを追加してみてください。 PHP(header()を使用できます)でそれを行わず、生のXMLファイルを読み取ろうとする場合は、おそらくヘッダーを。に設定する必要があります。 _Header set Access-Control-Allow-Origin "*"_を追加してhtaccessファイルを作成します。さらに、_Access-Control-Allow-Headers:*_を追加する必要がある場合があります。

また、本番モードで*を置き換えて、すべてのユーザーがデータを読み取れないようにし、代わりに独自のURLを追加することをお勧めします。

3
zatatatata

言うことのできないコードがなければ、クロスサイトajaxの制限に反する可能性があります。他のドメインにajaxリクエストを送信することはできません。

1
Richard H