我正在尝试从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)})
答案 0 :(得分:5)
您可以使用此CORS过滤器插件:
https://wiki.jenkins-ci.org/display/JENKINS/Cors+Filter+Plugin
或者您可以使用用户内容机制在Jenkins服务器上托管您的Angular应用程序:
答案 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设置中才能正常工作。