从AngularJS访问Jenkins API

时间:2013-10-24 16:05:04

标签: angularjs jenkins jsonp cors

我正在尝试从Jenkins和Angularjs提供的api休息中检索有关一个作业构建的信息。

Jenkins上实际上禁用了Jsonp:

Jenkins Security Advisory 2013-02-16

所以这段代码不起作用:

var url = 'http://jenkins-server:8080/job/job-name/api/json?jsonp=callback';
$http.jsonp(url).success(function (data) {
    console.log(data);
});

掷:

Uncaught SyntaxError: Unexpected token : 

默认情况下不启用Cors ...说实话我找不到安装此插件的方法:

并且此代码无法正常工作

var url = 'http://jenkins-server:8080/job/job-name/api/json'
$http({url: url, method: 'GET'}).success(function(data){console.log(data)})

3 个答案:

答案 0 :(得分:5)

您可以使用此CORS过滤器插件:

https://wiki.jenkins-ci.org/display/JENKINS/Cors+Filter+Plugin

或者您可以使用用户内容机制在Jenkins服务器上托管您的Angular应用程序:

https://wiki.jenkins-ci.org/display/JENKINS/User+Content

答案 1 :(得分:2)

现在似乎有一个插件用于将JSON请求列入白名单......只需转到插件,然后搜索JSON。

Secure Access插件。

答案 2 :(得分:0)

@Mauro,从Jenkins 1.537开始,您可以实现“ jenkins.security.SecureRequester ”并允许json请求工作。

您只需实施方法 permit(StaplerRequest req, Object bean) 并在那里进行验证,然后返回true(根据您的验证结果)以允许请求。

完成后,您只需使用您在问题中提到的第一个剪辑代码。

SecureRequester实施示例: -

import hudson.Extension;
import jenkins.security.SecureRequester;
import org.kohsuke.stapler.StaplerRequest;

@Extension
public class AllowRequest implements SecureRequester {

    public boolean permit(StaplerRequest req, Object bean) {

        // A method to validate the request and return the appropriate result
        return YOUR_VALIDATION_METHOD(req,bean); 
    }

    private boolean YOUR_VALIDATION_METHOD(StaplerRequest req, Object bean) {
        // validation goes here
    }

}

您需要将其构建为插件并将其安装在Jenkins设置中才能正常工作。