3

我想运行一个需要使用 ajax 从网页(jenkins 之外)登录的 Jenkis 作业,我必须打开另一个浏览器选项卡并打开(并经过身份验证)jenkins,才能从我的网页运行作业

我尝试了不同的方法来使用 ajax 发送身份验证信息这是我目前拥有的:

$.ajax({                              
    type: "POST",
    url: "http://myjenkins/job/job_name/buildWithParameters",
    dataType: 'jsonp',
    data: $("#myForm").serialize(),
    beforeSend: function(xhr){
    xhr.setRequestHeader("Authorization", "username:password");
    },
    success: function(data) {
    },             
    complete: function(xhr, statusText){
    }                                                                 
});

(还有一些从表单接收参数的 HTML 代码)如果我有一个经过 jenkins 身份验证的打开选项卡,这运行正常,但如果我没有,我会从 jenkins 得到“430 禁止”响应。

"xhr.setRequestHeader("Authorization", "username:password");" 只是我最近的尝试......

欢迎任何意见!

4

2 回答 2

0

这对我有用,非常感谢,只是为了扩展,因为根据 RFC 1945,授权标头值应包含用户名:密码作为编码(base64)字符串,这将导致类似于以下标头的内容:

授权:基本QWxhZGRpbjpvcGVuIHNlc2FtZQ==

例子:

beforeSend: function (xhr) {
xhr.setRequestHeader("Authorization", "Basic " + btoa("username:token"));
}
于 2015-03-24T21:56:55.063 回答
0
beforeSend: function (xhr) {
    xhr.withCredentials = true;
    data: $("[name='parameters']").serialize()
    xhr.setRequestHeader("Authorization", "Basic " + btoa("test:d8db6ae61f03219c52042638488e9744"));
},

works for me

于 2014-06-10T12:04:35.503 回答