Моя цель - предоставить странице панели инструментов (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?