感谢您花时间阅读我的问题!在香草中使用XMLHttpRequest而不使用JSONP克服CORS JavaScript
我花了几天试图解决一个AJAX请求问题。在阅读堆栈溢出的几十个答案后,我似乎无法找到解决方案。请帮忙。
我正在尝试使用XMLHttpRequest
方法使用vanilla JavaScript从Dark Sky提供的API接收JSON格式的数据。这是我试图发送我的请求的URI(在这里暴露我的密钥不是问题)Link to a sample API request
问题是我不断收到一个CORS错误。以前,我用JSONP请求解决了这个问题,但是这次我想了解是否有避免使用JSONP的方法。
我试过使用标题,并删除控制台中的CORS错误。但是,在响应中,请求后没有数据发送。这是浏览器使得没有导致一个错误CORS任何头请求:
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();
有没有一种方法,使一个API的调用不会自动与标题“访问控制 - 允许 - 响应Origin“,”http://localhost:9000/“还是带有一个可以防止CORS错误并包含响应的JSON数据的头文件?
非常感谢您的帮助!
你控制API的服务器端?如果您在添加标题时遇到问题,请添加该代码。 –
我无法控制API服务器。 –
CORS旨在限制对第三方API的访问。如果API不允许你调用它,你应该被浏览器拒绝。这就是整个问题。 https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS – tiblu