无法从普通 JavaScript 访问 Jenkins API

Not Able To Access Jenkins API From Plain JavaScript

我是 API 和 JavaScript 的新手,所以我不确定我在这里做错了什么,请在下面找到我遇到的问题的详细信息面对

Objective - 在网页上获取 Jenkins 详细信息

作为我的 objective 的一部分,我正在尝试制作一个网页,从中我可以触发 Jenkins 作业并获取网页上显示的构建信息。作为 objective 的一部分,我想通过我网页上的按钮触发 Jenkins 作业。

问题 - 我创建了以下脚本来执行操作 -

<script>
    function RunJenkinsJob() {
        
        var xhr = new XMLHttpRequest();
        xhr.open("POST", http://admin:114a2eae5e09d93b6ee831f248892ac581@localhost:8080/job/New_Test/build?token=Datacreation, true);
        xhr.setRequestHeader('Content-Type', 'application/json');
    }));
        
    }
    
    </script>
    <head>
        <style>body{background-color:#d0e4fe;}h1{color:orange;text-align:center;}p{font-family:"Times New Roman";font-size:20px;}</style>
    </head>
    <body>
        <h1>Check Jenkins Job Build</h1>
        <button type="button" onclick="RunJenkinsJob();"> Run Jenkins Job! </button>
    </body>
    </html>

然而,当我尝试单击此按钮时,没有任何反应,在直接从浏览器访问此 URL 时,我被要求提供用户名和密码,然后在刷新新版本后自动触发。

问题

如何在此 JavaScript 方法中为 Jenkins 提供身份验证,以便在单击按钮时可以触发新作业,并且如果我可以获得一些关于如何提取有关构建的信息的指示,那也将很有用。

系统详细信息 OS - Windows 詹金斯版本 - 2.235.1

-- 更新 1 -

请在下面找到更新的详细信息 -

<!DOCTYPE html>
<html>
    <script>
    
    function RunJenkinsJob() {
        
        var xhr = new XMLHttpRequest();
        xhr.open("POST", "http://admin:114a2eae5e09d93b6ee831f248892ac581@localhost:8080/job/New_Test/build?token=Datacreation", true);
        xhr.setRequestHeader('Content-Type', 'application/json');
        xhr.send();
        document.write(xhr.status);
        
    }
    
    </script>
    <head>
        <style>body{background-color:#d0e4fe;}h1{color:orange;text-align:center;}p{font-family:"Times New Roman";font-size:20px;}</style>
    </head>
    <body>
        <h1>Check Jenkins Job Build</h1>
        <button type="button" onclick="RunJenkinsJob();"> Run Jenkins Job! </button>
    </body>
    </html>

以下代码对我有用。

将其放入您的 运行 詹金斯工作职能中。如果它循环通过所有 4 个状态更改和它收到的状态,这将有助于调试。

var xhr = new XMLHttprequest();
var authorizationbasic = window.btoa("username:token");
xhr.onreadystatechange = function() {
    if(this.readyState == 4)
    {
         console.log(this.status);
    }
};
xhr.open("POST", "http://admin:114a2eae5e09d93b6ee831f248892ac581@localhost:8080/job/New_Test/build?token=Datacreation", true);
xhr.setRequestHeader('Authorization','Basic ' + authorizationbasic)
xhr.send();

如果您的状态仍然为 0,那么您可以检查 jenkins 安装中的 CORS Filter 设置。