Вызов 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 и прочитайте больше об этом.

Другие вопросы по тегам