Javascript 简单API调用(CORS)不工作
首先也是最重要的一点,我对使用API还不熟悉 我正在尝试对一个不同于我自己的客户端域(天气服务)进行最基本的API调用。除此之外,我在CORS方面遇到了问题,没有正确的标题,等等,所以我试图通过crossorigin.me(从我代码中的URL可以看出)引导调用来解决问题 (这不是代码,只是问题所在-向下滚动查看代码)但是,我的代码目前导致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
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了。啊,当然。我非常感谢你的帮助。