Проблема вызова API, для которого требуется ключ в заголовке, используя JS и Ajax - PullRequest
0 голосов
/ 15 февраля 2020

Поскольку я хочу отобразить результат вызова API на странице HTML, я использовал Ajax в Javascript для получения информации от API.

API-интерфейс DEV не поддерживает Мне нужен ключ, и я смог получить результат (да!)

            $.ajax({
            url: "https://api-dev.XXXXXXXXX.com/enterprise/123456/treeCount/2020-05",
            async: false,
            success: function(result){
                totalCount = totalCount + result.count;
            }
        }),

Так что этот код выше работает нормально.

API Prod требует ключ в заголовке, хотя, и я не могу заставить это работать. Нашел много примеров в StackOverflow, но все мои тесты провалились.

        $.ajax({
            url: "https://api.XXXXXXXXX.com/enterprise/123456/treeCount/2019-12",
            headers: { "x-api-key" : "12345678910" },               
            async: false,
            success: function(result){
                totalCount = totalCount + result.count;
            }
        })

Это хорошо работает в Postman при добавлении x-api-key со значением ключа, поэтому я знаю, что ключ хорош

Key in Postman

Есть идеи, что я делаю не так?

Спасибо!


РЕДАКТИРОВАТЬ 15 февраля: Спасибо за ваши ответы. Зашел в консоль, увидел некоторую ошибку CORS, а затем я добавил некоторую информацию, связанную с CORS и Content-Type, поэтому мой новый код в JavaScript выглядит следующим образом:

            $.ajax({
            url: "https://api.XXXXXXXXXX.com/enterprise/123456/treeCount/2019-12",
            headers: { "x-api-key" : "12345678910",
                   "Content-Type" : "application/json",
                  'Access-Control-Allow-Origin': '*' },             
            async: false,
            success: function(result){
                totalCount = totalCount + result.count;
            }
        })

Все еще получите то же сообщение об ошибке:

jquery -3.3.1.min. js: 2 [Устаревание] Синхронный запрос XMLHttpRequest в основном потоке не рекомендуется из-за его пагубных последствий для конечного пользователя , Для получения дополнительной помощи, проверьте https://xhr.spec.whatwg.org/. jquery -3.3.1.min. js: 2 Доступ к XMLHttpRequest в 'https://api.XXXXXXXXX.com/enterprise/123456/treeCount/2020-05' из источника 'null' был заблокирован политикой CORS: Ответ на запрос предполетной проверки не проходит проверка контроля доступа: в запрашиваемом ресурсе отсутствует заголовок «Access-Control-Allow-Origin». jquery -3.3.1.min. js: 2 Не удалось загрузить ресурс: net :: ERR_FAILED

Когда In выполняет только вызов API Dev (которому не требуется ключ API), он отлично работает, как указано выше, и я не получаю сообщение об ошибке CORS.

Еще раз спасибо за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...