Вызов API Easypost из JavaScript клиента браузера
Я пытаюсь вызвать API Easypost из javascript/jquery (да, я знаю, что это "плохая" идея, потому что код JS содержит ключ учетной записи в открытом виде, но этот JS и HTML находятся в безопасном разделе нашего веб-сайта, доступного только для специально уполномоченные люди).
Мой звонок как:
$.ajax({
url: uri,
type: "POST",
data: JSON.stringify(data),
contentType: "application/json",
headers: {
"Authorization": "Basic " + btoa(username + ":" + password)
},
success: function(result) {...},
error: function(...) {...}
});
Он возвращает 404, и Chrome показывает эту ошибку:
Не удалось загрузить https://api.easypost.com/v2/shipments: Ответ на запрос предварительной проверки не проходит проверку контроля доступа: в запрошенном ресурсе отсутствует заголовок "Access-Control-Allow-Origin". Происхождение " https://localhost/ ", следовательно, не разрешен доступ. Ответ имел HTTP-код состояния 404.
Это возможно?
1 ответ
Это означает, что сервер easypost API не принимает CORS-запросы или запросы, исходящие из localhost
,
Основываясь на их документации, они предоставляют только серверные библиотеки для взаимодействия с их API. Я предполагаю, что вы не сможете напрямую взаимодействовать с ним из своего веб-приложения.
Лучше всего использовать прокси-сервер, вы можете разработать его самостоятельно или использовать что-то вроде node-http-proxy для прокси своих вызовов API. (Есть эквиваленты php или python)
Прокси-сервер сможет выдавать запросы и затем перенаправлять их в ваше приложение.
Предложил дальнейшее чтение: напечатайте понимание CORS на Google и прочитайте больше об этом.