Использование JQuery для доступа к SonarQube Web API
Моя цель - предоставить страницу панели инструментов (html) с конкретными метриками для списка проектов. Для этого я планирую использовать JQuery для извлечения и отображения этих метрик.
Итак, я пытаюсь настроить функцию JQuery для извлечения данных из SonarQube Web API для определенного компонента, и у меня возникают проблемы с получением правильной авторизации. Я могу получить данные, которые я хочу с curl
но не могу заставить вызов JQuery работать.
Это работает (с соответствующими определениями THIS_IS_MY_TOKEN
а также MY_SERVER
а также COMPONENT
):
curl -Ssu ${THIS_IS_MY_TOKEN}: "https://${MY_SERVER}/api/measures/component?component=${COMPONENT}&metricKeys=coverage"
Но когда я помещаю это в html-документ (с загруженным jquery/3.3.1) и загружаю его в Chrome (с одинаковыми определениями для каждой из переменных) - я получаю ошибку 401:
$.ajax({
url: `https://${MY_SERVER}/api/measures/component`,
crossDomain: true,
dataType: 'jsonp',
headers: {
'Authorization': 'Basic ' + btoa(THIS_IS_MY_TOKEN),
},
data: {
component : `${COMPONENT}`,
metricKeys : 'coverage',
},
});
Я даже попытался пропустить токен и использовать свой логин и пароль:
'Authorization': 'Basic ' + btoa(`${USER}:${PW}`)
Все с одинаковыми результатами -> 401.
Примечание. Инструменты разработчика Chrome показывают 401 ответ, в то время как Firefox показывает 200 - для того же кода. Поэтому я начал выгружать код ответа прямо из вызова ajax, и оба браузера соглашаются: 404.
Дальнейшее тестирование - я использовал инструменты разработчика Chrome для копирования как cURL запроса и вставил его в командную строку (со всеми его великолепными заголовками). Я должен был добавить -u ${THIS_IS_MY_TOKEN}:
к запросу, поскольку копия / вставка не включала Authorization
заголовок (это известно по соображениям безопасности?) - и это сработало!
Для меня это просто еще одно доказательство того, что это проблема с тем, как я добавляю заголовок.
Любые намеки на то, что мне не хватает в JQuery?