Javascript 简单API调用(CORS)不工作

Javascript 简单API调用(CORS)不工作,javascript,api,xmlhttprequest,cors,Javascript,Api,Xmlhttprequest,Cors,首先也是最重要的一点,我对使用API还不熟悉 我正在尝试对一个不同于我自己的客户端域(天气服务)进行最基本的API调用。除此之外,我在CORS方面遇到了问题,没有正确的标题,等等,所以我试图通过crossorigin.me(从我代码中的URL可以看出)引导调用来解决问题 (这不是代码,只是问题所在-向下滚动查看代码)但是,我的代码目前导致 console.log(status); //returns 0 console.log(statusText); //returns an empty st

首先也是最重要的一点,我对使用API还不熟悉

我正在尝试对一个不同于我自己的客户端域(天气服务)进行最基本的API调用。除此之外,我在CORS方面遇到了问题,没有正确的标题,等等,所以我试图通过crossorigin.me(从我代码中的URL可以看出)引导调用来解决问题

(这不是代码,只是问题所在-向下滚动查看代码)但是,我的代码目前导致

console.log(status); //returns 0
console.log(statusText); //returns an empty string
这是完整的代码

函数createCORSRequest(方法,url){
xhr=newXMLHttpRequest();
//我在Chrome中工作,所以我只包含凭据,不考虑其他浏览器
如果(xhr中的“带凭证”){
open(方法、url、true);
}
xhr.send();
console.log(xhr.status);//返回0
console.log(xhr.statusText);//返回空字符串
}

createCORSRequest(“获取”https://crossorigin.me/https://www.metaweather.com/api/location/2459115");
您正在调用
xhr.send()
,然后立即尝试读取响应的状态

您必须等到有响应后才能执行此操作

使用加载事件侦听器

xhr.addEventListener("load", log_status);
xhr.send();

function log_status() {
   console.log(this.status);
   console.log(this.statusText);
}

您只是试图在发送请求之前读取状态。您必须等待响应。“但我了解到只有服务器可以控制/访问头”-HTTP消息有头。HTTP请求有头。HTTP响应有头。服务器正在抱怨您的HTTP请求没有包含
Origin
头。这是因为您没有将其与XMLHttpRequest一起发送。@Quentin在第2行,我将xhr定义为XMLHttpRequest。那么为什么它不是XMLHttpRequest呢?非常感谢你说“如果你直接访问该网站…来源:标题是必需的”。那你就不用XMLHttpRequest了。啊,当然。我非常感谢你的帮助。