9

我正在尝试从 Jenkins 与 Angularjs 提供的 api rest 中检索有关一项工作构建的信息。

Jsonp 实际上在 Jenkins 上被禁用:

Jenkins 安全公告 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)})
4

3 回答 3

5

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

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

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

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

于 2015-06-13T21:49:32.160 回答
1

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

安全访问插件。

于 2014-03-07T19:53:53.320 回答
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 设置中才能工作。

于 2013-12-07T13:39:36.730 回答