私の質問を読んでいただきありがとうございます!バニラでJSONPのないXMLHttpRequestでCORSを克服するJavaScript
私はAJAXリクエストの問題を解決しようと数日を費やしました。スタックオーバーフローに関する数十の答えを読んだ後、私は解決策を見つけることができません。助けてください。
XMLHttpRequest
メソッドをバニラJavaScriptで使用して、Dark Skyが提供するAPIからJSON形式のデータを受け取ろうとしています。これは私の要求を送信しようとしているURIです(私のキーを公開することは問題ではありません)Link to a sample API request
問題は私がCORSエラーを受け続けることです。以前はJSONPリクエストでこの問題を克服しましたが、今回はJSONPの使用を避ける方法があるかどうかを理解しようとしています。
私はヘッダーを使用しようとしましたが、コンソールでCORSエラーが取り除かれました。ただし、応答では、要求後に送信されるデータはありません。自動的にヘッダ「アクセス制御-Allow-に応答しないAPIへの呼び出しを作るための方法があります
function CallAjax() {
var xhr = new XMLHttpRequest();
xhr.open("GET", "https://api.darksky.net/forecast/166731d8eab28d33a26c5a51023eff4c/43.11201,-79.11857", true);
xhr.onload = function() {
console.log(xhr.responseText);
alert("sucuess");
};
xhr.send();
}
CallAjax();
を:これは、ブラウザがCORSエラーをもたらす任意のヘッダーなしで作るの要求であります「http://localhost:9000/」、またはCORSエラーを防止し、応答とともにJSONデータを含むヘッダーを使用していますか?
ありがとうございました!
あなたは、APIのサーバー側を制御しますか?ヘッダーを追加する際に問題がある場合は、そのコードを含めてください。 –
私はAPIサーバーを制御できません。 –
CORSはサードパーティのAPIへのアクセスを制限するように設計されています。 APIが呼び出すことを許可していない場合、あなたはブラウザによって拒否されるはずです。それは全体のポイントです。 https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS – tiblu