我正在使用此代码发出API请求:
function httpGet(url){
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
console.log(this.status)
if (this.readyState == 4 && this.status == 200) {
console.log("Got names")
getNamesFromJSONArray(request.responseText);
};
};
request.open("GET", url, true);
request.setRequestHeader("Authorization", "Basic (API key goes here)");
request.setRequestHeader("Accept-Encoding", "gzip");
request.send();
}
它在前几天工作但现在它失败了,告诉我:
无法加载资源:预检响应不成功
和
XMLHttpRequest无法加载https://api.insight.ly/v2.1/contacts。 飞行前响应不成功
此外,"有名字"从未打印过。
为什么这段代码会在前一天工作时中断?这是API端还是我的问题?
UPDATE! 我在api网站上找到了this。实现这个最简单的方法是什么?我目前没有后端,除此之外不需要任何后端。我理解这个问题是因为他们不希望我的API在客户端可读的Javascript中,这是有道理的。我可以通过其他方式登录API,可能是用户的电子邮件和密码吗?
答案 0 :(得分:0)
API需要能够(正确地)处理CORS,具体而言,您的问题是关于预检。
在进行实际的CORS调用之前,它将使用OPTIONS方法尝试相同的调用,以确保它是安全的。服务器应该为此返回某些标头。
所以是的,这是在API方面。
您可以阅读有关HTTP access control (CORS)
的更多详情