Я пытаюсь получить доступ к API из внешнего интерфейса, и я пробовал запросы xhr и fetch api.
При использовании fetch я получил сообщение об ошибке «Ответ на запрос перед полетом не проходит проверку контроля доступа: в запрошенном ресурсе отсутствует заголовок« Access-Control-Allow-Origin ». Origin 'Поэтому http://127.0.0.1:5500' не разрешен доступ. Если непрозрачный ответ удовлетворяет вашим потребностям, установите режим запроса 'no-cors', чтобы получить ресурс с отключенным CORS. "
Однако при использовании XHR я выполняюне получает заголовки, не выводящие предупреждение, и он успешно извлекает JSON из API.
Я не совсем понимаю CORS, но, насколько я понимаю, на API-интерфейсе, который я запрашивал, не было заголовка, и поэтому я не смог получить API.НО, как xhr смог получить API с предполагаемым отсутствием заголовков в API?Как был возможен запрос в XMLHTTPRequest, но не запрос извлечения?Как бы я использовал fetch для получения этого API?Для справки я включил ниже свой код извлечения и код XHR.
Код извлечения:
fetch(requestURL, {
headers: {
"Content-Type": "application/json",
'Authorisation': 'Basic' + apiKeySecured,
"Access-Control-Allow-Origin": "*", // Required for CORS support to work
"Access-Control-Allow-Credentials": false,
"api-key": apiKeySecured,
}
}).then(function (response) {
return response.json();
})
.then(function (myJson) {
console.log(JSON.stringify(myJson));
})
.catch(error => console.error(error));
Код XHR:
var xhr = new XMLHttpRequest();
xhr.withCredentials = false;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", requestURL);
xhr.setRequestHeader(`api-key`, apiKeySecured);
xhr.send();