1

我的目标是提供一个仪表板页面 (HTML),其中包含项目列表的特定指标。为此,我计划使用 JQuery 来检索和显示这些指标。

因此,我正在尝试设置一个 JQuery 函数来从 SonarQube Web API中检索给定组件的数据,并且在正确获取授权时遇到问题。我可以提取我想要的数据,curl但不能让调用 JQuery 工作。

这有效(具有 和 的适当THIS_IS_MY_TOKEN定义MY_SERVERCOMPONENT

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 中缺少什么的任何提示?

4

0 回答 0