2012-01-21 15 views
1

この問題のトラブルシューティング方法はわかりません。「ip」はAccess-Control-Allow-Originによって許可されていません

XMLHttpRequestはhttp://gumball.wickedlysmart.com/?lastreporttime=1302212903099をロードできません。 Origin http://192.168.0.102は、Access-Control-Allow-Originによって許可されていません。

私はグーグルで、人々は私が 'Access-Control-Allow-Origin:*;'ヘッダーにある

どうすればよいですか?どこに置くの? HTMLファイルですか?またはjsファイル?

ここに私のJSコードです。助けてください。彼らは-

window.onload = function() { 

    var url = "http://gumball.wickedlysmart.com/?lastreporttime=1302212903099&callback=?"; 
    var request = new XMLHttpRequest(); 

    request.open("GET", url); 
    request.onload = function() { 
     if (request.status == 200) { 
      updateSales(request.responseText); 
     } 
    }; 
    request.send(null); 

    function updateSales(responseText) { 
     var salesDiv = document.getElementById("sales"); 
     salesDiv.innerHTML = responseText; 
    } 

} 

答えて

2

あなたはAccess-Control-Allow-Originヘッダーを追加しないでください。

"Response Header"ですので、メンテナはgumball.wickedlysmart.comですので、応答に追加する必要があります。

でも、LAN専用IPを追加すると確信しています。192.168.x.x


ただし、サービスはJSONPをサポートするので、ヘッダが必要であってはなりません。これは、JSONPがAjaxではなく、XMLHttpRequestを使用していないためです。

代わりに、JSONPリクエストはドキュメントに新しい<script>ソースを追加することによって作られています:

function requestJSONP(url) { 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = url; 

    document.body.appendChild(script); 
} 

callback=??は、いくつかのライブラリ(例えば、jQuery)によって提供されるだけの援助であることに注意してください。あなたが実際に応答を受信するcallbackの値と実際のグローバル関数名を指定する必要があります。

window.processResponse = function (data) { 
    // ... 
}; 

requestJSONP('http://gumball.wickedlysmart.com/?callback=processResponse'); 

例:http://jsfiddle.net/mnjxB/1/

+0

徹底答え! – cheeken

関連する問題