我被分配了一个开发网站的任务,该网站依赖于从API检索车辆库存数据。我以前使用各种API进行过开发,但是我在这方面确实没有很多经验,而该API令我有些头疼!不幸的是,构建API的公司非常恐怖,充满敌意,不愿向我提供有关我可能出问题的地方的任何见解。尽管我恳求!
以下是API指南中包含的内容:
该请求将通过https调用提供给API_COMPANY提供的URL。
安全性
所有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(禁止)。
答案 0 :(得分:0)
您是否尝试过更改身份验证标头以代表其示例
他们的典范:
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
但是您只传递了以下标头:
Accept: application/json
Authorization: Basic <user:pass>
Accept-Encoding: gzip, deflate
Host: WEBSITE
尝试在下面的代码h.append('Host', 'WEBSITE');
下添加代码
h.append('UserName', username);
h.append('Password', password);
h.append('OrganisationalUnit_UID', GUID);
并删除Authorization
标头