Заголовок Api-версии отправляется неправильно
Дорогие друзья, у меня странная проблема: я пытаюсь подключиться к API, и когда я пытаюсь выполнять запросы API в почтальоне или бессоннице, все в порядке. Когда я использую один и тот же код на своем веб-сайте и даже на локальном хосте, запрос потенциальных клиентов не работает и сообщает, что api-версия не определена.
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
var settings = {
"async": true,
"crossDomain": true,
"url": "https://affiliate-api.tradingcrm.com:4477/token",
"method": "POST",
"data": "{ userName: \"alpt\", password: \"Alpt@12345\" }"
}
$.ajax(settings).done(function (response) {
var settings2 = {
"async": true,
"crossDomain": true,
"url": "https://affiliate-api.tradingcrm.com:4477/accounts/lead",
"method": "POST",
"headers": {
"Authorization": "Bearer " + response.Token,
"Api-Version": "3",
"Content-Type": "application/json"
},
"data": "{firstName:\"test\",lastName:\"test2\",email:\"test@test.test\"}"
}
$.ajax(settings2).done(function (response2) {
console.log(response2.accountId);
});
});
</script>
1 ответ
Его проблема CORS, отсутствует заголовок сервера API Access-Control-Allow-Headers
так что вы не можете установить пользовательский заголовок запроса, например "Api-Version": "3"
, решение использовать CORS прокси или получить данные с вашего сервера.
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
var settings = {
"async": true,
"crossDomain": true,
"url": "https://affiliate-api.tradingcrm.com:4477/token",
"method": "POST",
"data": "{ userName: \"alpt\", password: \"Alpt@12345\" }"
}
$.ajax(settings).done(function(response) {
console.log('requesting using CORS Proxy.....');
var settings2 = {
"async": true,
"crossDomain": true,
"url": "https://cors-anywhere.herokuapp.com/https://affiliate-api.tradingcrm.com:4477/accounts/lead",
"method": "POST",
"headers": {
"Authorization": "Bearer " + response.Token,
"Api-Version": "3",
"Content-Type": "application/json"
},
"data": "{firstName:\"test\",lastName:\"test2\",email:\"test@test.test\"}"
}
$.ajax(settings2)
.done(function(response2) {
console.log(response2.accountId);
})
.fail(function(jqXHR, textStatus) {
console.log(textStatus);
console.log(jqXHR.responseText);
});
})
</script>