首先,我是使用API的新手。
我正在尝试将最基本的API调用发送到不同的域(天气服务)而不是我自己的客户端。其中,我遇到CORS问题,没有正确的标题等等,所以我尝试通过crossorigin.me指导调用来解决这个问题(从我的代码中的URL可以看出)。
(这不是代码,只是问题 - 向下滚动代码)但是,我的代码目前导致......
console.log(status); //returns 0
console.log(statusText); //returns an empty string
这是完整的代码。
function createCORSRequest(method, url) {
xhr = new XMLHttpRequest();
//I work in Chrome, so I only included withCredentials, not accounting for other browsers
if ("withCredentials" in xhr) {
xhr.open(method, url, true);
}
xhr.send();
console.log(xhr.status); //returns 0
console.log(xhr.statusText); //returns empty string
}
createCORSRequest("GET", "https://crossorigin.me/https://www.metaweather.com/api/location/2459115");
如果您直接访问该网站https://crossorigin.me/https://www.metaweather.com/api/location/2459115,我会收到以下消息:来源:标头是必需的。在控制台中,它给出状态代码403 - 但我读到只有服务器可以控制/访问标题,而我(编码器)不能。
答案 0 :(得分:1)
您正在呼叫xhr.send()
,然后立即尝试阅读回复状态。
你必须等到有回应才能做到这一点。
使用加载事件侦听器。
xhr.addEventListener("load", log_status);
xhr.send();
function log_status() {
console.log(this.status);
console.log(this.statusText);
}