【问题标题】:Accessing Jenkins API from AngularJS从 AngularJS 访问 Jenkins API
【发布时间】:2013-11-03 11:03:25
【问题描述】:

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

Jsonp 实际上在 Jenkins 上被禁用:

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)})

【问题讨论】:

  • 您使用的是哪个浏览器? IE10 以下不支持 CORS。
  • @GrantByrne 通过 XDomainRequest 在 IE8 和 IE9 中获得部分支持
  • 我正在使用 chrome。 IE 很烂 ;-)

标签: angularjs jenkins jsonp cors


【解决方案1】:

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

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

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

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

【讨论】:

  • 我们需要在这里为 access-control-allow-header 和 access-control-expose-headers 提供什么值?,如果我正在尝试从 angular 获取请求。谢谢
【解决方案2】:

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

安全访问插件。

【讨论】:

    【解决方案3】:

    @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 设置中才能工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-28
      • 1970-01-01
      • 2016-06-14
      • 2019-10-13
      • 1970-01-01
      • 2015-01-18
      • 2023-03-09
      • 2012-09-04
      相关资源
      最近更新 更多