2017-03-31 5 views
0

これは私の最初のAjaxプログラムであり、どこに問題があるのか​​わからないのでコードを修正できません。AjaxのURL open()

デバッガの使用中に発生するエラー( )は、http://localhost/function.txtを読み込めません。要求されたリソースに「Access-Control-Allow-Origin」ヘッダーが存在しません。したがって、原点「ヌル」はアクセスが許可されません。

function calling() 
{ 
    var x; 
    if (window.XMLHttpRequest) { 
    x = new XMLHttpRequest(); 
    } else { 

    x = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    x.onreadystatechange = function(){ 
     if(this.readyState == 4 && this.status == 200) 
     { 
      document.getElementById("block").innerHTML = this.responseText; 
     } 

    }; 
    x.open("GET", "http://localhost/function.txt",true); 
    x.send(); 
} 

function.txt

<html> 
<head></head> 
<body> 
<h2>Ajax is working</h2> 
</body> 
</html> 
+0

localhostにはポート80をリッスンするサーバーがありますか?あなたが持っている場合、このサーバーはCORS要求を受け入れますか? –

答えて

0

はあなたfunction.txtと同じ場所にあり、あなたのjsのですか? CORSの詳細については

、このリンクを見て:https://www.html5rocks.com/en/tutorials/cors/

UPDATE: をこれが私の作品、私はあなたのApacheの設定で何かが多分あると思い...

function calling() 
{ 
    var xhr = new XMLHttpRequest(), 
     method = "GET", 
     url = "function.txt"; 

    xhr.open(method, url, true); 
    xhr.onreadystatechange = function() { 
      if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) { 
       alert(xhr.responseText); 
      } 
     }; 
    xhr.send(); 
} 

calling(); 
+0

はい、私のjs、html、.txtファイルは同じ場所にあります –

+0

"http://localhost/function.txt"の代わりに "function.txt"をURLとして使用してください。 – Th1m0

+0

これはURLを変更した後に発生するエラーです。XMLHttpRequestはfile:/// C:/Apache%20Tomcat/apache-tomcat-9.0.0.M18/webapps/jsp/function.txtをロードできません。 Cross originリクエストは、http、data、chrome、chrome-extension、https、chrome-extension-resourceのプロトコルスキームでのみサポートされています。 –

0

ドメインが明示的に許可していない場合( 'Access-Control-Allow-Origin'ヘッダー経由)、別のドメインのURLにAjaxを呼び出すことはできません。 エラーは、別のドメインからAjaxコールを発信していることを意味します。 function.txtファイルがjsと同じ場所にある場合は、.open()の相対パスを使用してみてください。

0

セキュリティで保護されておらず、デフォルトではブラウザによって禁止されているCORS要求を試みています。ターゲットサイトを管理している場合はenable CORSです。そうでない場合は、プロキシとして使用されるページを作成する必要があります。つまり、ターゲットサイトのページではなくこのページにリクエストを送信します。ページは、順番に、ターゲットページに要求を送信し、ブラウザに出力を送信します。これは実行可能なソリューションですが、ターゲットサイトのすべての絶対パスが適切に処理されることを確認する必要があります。