我正在尝试使用AJAX请求连接到API,但是我没有得到任何响应。无论是我的标题还是其他问题 - 当我在控制台中看不到任何错误时,很难调试它。
这是我的AJAX请求:
$.ajax({
url: 'https://api.partners.bazoeka.com/latest/api/postcodecheck?&format=json',
method: 'GET',
crossDomain: true,
beforeSend: function (xhr) {
xhr.setRequestHeader('username:myUsername', 'password:myPassword','apikey:apiKey');
}
}).done(function () {
console.log("connected!");
//do stuff
});
此API提供的文档提供的信息很少:
通过在标头中传递用户名,密码和API密钥来完成身份验证 HTTP(S)请求。对于所有功能,需要授权。所以能够做到 成功通话您必须传递用户名,密码和API密钥
我知道我的凭据是正确的,请求可以正常使用cURL:
curl -H"username:myUsername" -H"password:myPassword" -H "apikey:apiKey" "https://api.partners.bazoeka.com/latest/api/postcodecheck?&format=json&postcode=1010AA&housenr=1"
问题可能是我的AJAX请求中的标题吗?
答案 0 :(得分:2)
xhr.setRequestHeader()
应接受密钥和值,如果您要添加多个标头,请尝试为每个标头添加xhr.setRequestHeader()
beforeSend: function (xhr) {
xhr.setRequestHeader('username', 'MyUsername');
xhr.setRequestHeader('password', 'MyPassword');
xhr.setRequestHeader('apikey', 'apikey');
}
见doc: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader
答案 1 :(得分:0)
根据jQuery文档,如果beforeSend中的回调函数将返回false,则不会执行ajax请求。 我认为,setRequestHeader将需要2个参数,标题名称和标题值。 你能为每个标题尝试调用setRequestHeader,如:
xhr.setRequestHeader('username', 'myUsername');
xhr.setRequestHeader('password','myPassword');
xhr.setRequestHeader('apikey' , 'apiKey');
更好的是,将附加标题作为对象传递给ajax配置:
...
headers: {
username: 'myUsername',
password: 'myPassword',
apikey: 'apikey
},
...