Прежде всего, я новичок в работе с 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, я получаю это сообщение: Origin: заголовок не требуется. В консоли он дает код статуса 403, но я читал, что только сервер может управлять/получать доступ к заголовку и что я (кодер) не могу.
Вы вызываете xhr.send()
а затем сразу же пытаетесь прочитать статус ответа.
Вы должны подождать, пока не появится ответ, прежде чем вы сможете это сделать.
Используйте прослушиватель событий загрузки.
xhr.addEventListener("load", log_status);
xhr.send();
function log_status() {
console.log(this.status);
console.log(this.statusText);
}
Origin
. Это потому, что вы не отправили его с XMLHttpRequest.