Javascript 为什么这个HTTP请求失败了?

Javascript 为什么这个HTTP请求失败了?,javascript,http,xmlhttprequest,Javascript,Http,Xmlhttprequest,我正在使用以下代码发出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")

我正在使用以下代码发出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。 飞行前响应不成功

此外,“得到的名字”从未打印过

为什么这段代码在前几天运行时会中断?这是API端的问题还是我的问题

更新!
我在api网站上找到了。实现这一点最简单的方法是什么?我目前没有后端,除此之外不需要任何后端。我理解这个问题是因为他们不希望我的API是客户端可读的Javascript,这是有道理的。我是否可以通过其他方式登录API,可能是通过用户的电子邮件和密码?

API需要能够(正确)处理CORS,具体来说,您的问题是关于飞行前的

在进行实际的CORS调用之前,它将使用OPTIONS方法尝试相同的调用,以确保进行调用是安全的。服务器应为此返回某些标头

因此,是的,这是在API方面


您可以阅读更多关于API需要能够(正确)处理CORS的详细信息,具体来说,您的问题是关于飞行前的

在进行实际的CORS调用之前,它将使用OPTIONS方法尝试相同的调用,以确保进行调用是安全的。服务器应为此返回某些标头

因此,是的,这是在API方面


您可以阅读有关

的更多详细信息,对我来说,这听起来像是一个CORS问题。您可能需要发送正确的访问头。@Obsidian那么几天前它为什么工作了?有关这里发生的情况的解释,请参阅或(很遗憾,标记为重复的问题没有一个答案,据我所知,它根本无法解释这种情况下的行为)。要点是:
https://api.insight.ly/v2.1/contacts
端点要求对选项请求进行授权。不应该,因为
https://api.insight.ly/v2.1/contacts
需要对选项请求进行授权,您无法对其进行修复您无法从浏览器中运行的前端JavaScript代码向该端点发出请求并从中获取数据。如果它对您以前的工作没有任何错误,那么我猜您只能假设
https://api.insight.ly/v2.1/contacts
所有者最近改变了行为(我想是为了要求对选项请求进行授权),这正是导致事情失败的原因you@sideshowbarker谢谢你的回复。所以基本上没有后端就无法访问这些数据?听起来像是CORS的问题。您可能需要发送正确的访问头。@Obsidian那么几天前它为什么工作了?有关这里发生的情况的解释,请参阅或(很遗憾,标记为重复的问题没有一个答案,据我所知,它根本无法解释这种情况下的行为)。要点是:
https://api.insight.ly/v2.1/contacts
端点要求对选项请求进行授权。不应该,因为
https://api.insight.ly/v2.1/contacts
需要对选项请求进行授权,您无法对其进行修复您无法从浏览器中运行的前端JavaScript代码向该端点发出请求并从中获取数据。如果它对您以前的工作没有任何错误,那么我猜您只能假设
https://api.insight.ly/v2.1/contacts
所有者最近改变了行为(我想是为了要求对选项请求进行授权),这正是导致事情失败的原因you@sideshowbarker谢谢你的回复。所以基本上没有后端就无法访问这些数据?谢谢你的回答!我对此进行了调查,并对我的问题进行了更新。有什么建议吗?在我看来,他们已经回答了你的问题。不,你不能使用CORS(你不能直接调用API),他们已经给了你一个选项,那就是写一个代理。谢谢你的回答!我对此进行了调查,并对我的问题进行了更新。有什么建议吗?在我看来,他们已经回答了你的问题。不,您不能使用CORS(您不能直接调用API),而且他们已经给了您一个选项,即编写代理。