我的目标是提供一个仪表板页面(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中缺少的内容的任何提示吗?