2013-10-24 50 views
8

我試圖從jenkins與Angularjs提供的api休息中檢索關於一個作業的信息。從AngularJS獲取Jenkin API

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

哪個瀏覽器是你使用?在IE10下不支持CORS。 – GrantByrne

+0

@GrantByrne它在IE8和IE9中通過XDomainRequest支持部分支持 –

+1

我正在使用chrome。 IE吸吮;-) – Mauro

回答

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 
    } 

} 

你需要建立這個作爲一個插件,在你安裝它詹金斯的設置工作。

2

現在似乎有一個插件將白名單JSON請求列入白名單...只需進入插件並搜索JSON即可。

安全訪問插件。