我的目标是提供一个仪表板页面 (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调用dump响应码,两个浏览器都同意404。
进一步测试 - 我使用 Chrome 开发者工具将请求复制为 cURL,并将其粘贴到命令行(带有所有华丽的标头)。-u ${THIS_IS_MY_TOKEN}:
由于复制/粘贴不包含标头,因此我必须将其添加到请求中Authorization
(出于安全原因,这是众所周知的事情吗?)-它起作用了!
对我来说,这只是进一步证明我添加标题的方式存在问题。
关于我在 JQuery 中缺少什么的任何提示?