Мне была поручена разработка веб-сайта, который опирается на получение данных о запасах транспортных средств из API. Ранее я разрабатывал с использованием различных API, но у меня действительно нет большого опыта в этой области, и этот API вызывает у меня головную боль! К сожалению, компания, которая создала API, довольно пугающая, враждебная и не желающая дать мне какое-либо представление о том, где я могу пойти не так. Несмотря на мою просьбу!
Ниже приведено то, что включено в руководство по API:
Запрос будет предоставлен посредством https-вызова на URL, предоставленный API_COMPANY.
Безопасность
Все API ожидают, что следующий заголовок http-безопасности будет предоставлен как часть запроса. Все детали будут предоставлены API_COMPANY. Каждый дилер будет иметь уникальный OrganisatinalUnit_UID.
Запрос
GET
https://theurltotheapi.net/API/vehicles/stockstockListOptionModel.includenewvehicles=true
Accept: application/json
UserName: USERNAME
Password: PASSWORD
OrganisationalUnit_UID: UID
Host: MYWEBSITE.CO.UK
Accept-Encoding: gzip, deflate
Я пробовал различные методы для получения данных API, включая XMLHttpRequest, а также метод Fetch, указанный ниже. Но я постоянно получаю консоль журнала 403 ошибка?
<script src="link_to_credentials.js"></script>
<script>
const uri = 'https://theurltotheapi.net/API/vehicles/stock?stockListOptionModel.includenewvehicles=true';
let username = USERNAME;
let password = PASSWORD;
let h = new Headers();
h.append('Accept', 'application/json');
h.append('Authorization', 'Basic ' + window.btoa(username + ":" + password));
h.append('Accept-Encoding', 'gzip, deflate');
h.append('Host', 'WEBSITE');
let req = new Request(uri, {
method: 'GET',
headers: h,
OrganisationalUnit_UID: GUID,
mode:'no-cors'
});
fetch(req)
.then ( (response)=>{
if (response.ok){
return response.json();
}else{
throw new Error('Could not fetch data');
}
})
.then( (jsonData) =>{
console.log(jsonData);
})
.catch ( (err) =>{
console.log('ERROR : ', err.message);
});
</script>
Я ожидал увидеть данные о запасах автомобилей JSON в консоли, но я получил ошибку 403 -
Не удалось загрузить ресурс: сервер ответил со статусом 403 (Запрещено).