Проблема CORS , на сервере API отсутствует заголовок Access-Control-Allow-Headers
, поэтому вы не можете установить настраиваемый заголовок запроса, например "Api-Version": "3"
, решение использует прокси-сервер CORS или получает данные с вашего сервера или просит вашего провайдерадобавьте его.
Почтальон отличается тем, что почтальон не спрашивает серверный API, он просто отправляет заголовки, а Browser
, потому что другому домену он будет запрашивать, выполняя OPTIONS
запрос со следующими заголовками до Post
запрос сделан.
Access-Control-Request-Headers: api-version,authorization,content-type
Затем серверный API должен ответить заголовками
Access-Control-Allow-Headers: api-version,authorization,content-type
Тест прокси-сервера 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>