如何使用javascript将jenkins数据发送到HTML页面

时间:2018-01-29 03:52:11

标签: javascript jquery json ajax jenkins

我刚刚按照Jenkins网站上的步骤进行操作。现在我可以使用http://localhost:8080

登录Jenkins

当我使用http://localhost:8080/api/json?pretty=true时,我可以从我的localhost服务器获得JSON响应。但是当我尝试将数据发送到html页面时,即当我使用url http://localhost:1234/foldername/file.html时,我无法使用AJAX调用获取数据。下面是我用于AJAX Call的代码

$.ajax({
        type: 'GET',
        url: 'http://localhost:8080/api/json?pretty=true',
        dataType: 'json',
        //whatever you need
        beforeSend: function (xhr) {
            xhr.setRequestHeader('Authorization', make_base_auth('admin', 'admin'));
        },
        success: function (data){
            alert(data);
        }
    });

    function make_base_auth(user, password) {
        var tok = user + ':' + password;
        var hash = btoa(tok);
        return 'Basic ' + hash;
    }

我收到了身份验证错误。

1 个答案:

答案 0 :(得分:1)

根据我对the documentation的理解,Jenkins建议使用通过HTTP基本身份验证提供的用户API密钥,而不是密码。

现代jQuery(1.5或更高版本)还为jQuery.ajax()的选项添加了标题字段

headers: {'Authorization': 'Basic ' + btoa('username:apitoken')}

但是,如果没有这些建议,你在这里描述的应该没问题。

我的假设是您遇到Same-origin policy,因为您的客户端基于浏览器文档,来自与Jenkins服务器不同的来源(不同的端口)。您需要在Jenkins服务器上添加CORS headers,以允许您的网页访问Jenkins资源,或者让Jekins API +您的客户端页面都来自单一来源。

对于您在此处的示例,您可以使用CORS Filter Plugin并且需要添加标头至少如下所示:

Access-Control-Allow-Origins: http://localhost:1234
Access-Control-Allow-Methods: GET, OPTIONS
Access-Control-Allow-Headers: Authorization

在制作中,您既可以使用单一来源,也可以更新来源列表以包含仪表板生产中的任何位置,或者如果您对同源问题有信心,*作为任何来源的通配符