2013-10-24 4 views
8

Ich versuche, Informationen über einen Job Build aus der API von Jenkins mit Angularjs zur Verfügung gestellt zu erhalten.Accessing Jenkin API von AngularJS

JSONP tatsächlich auf Jenkins deaktiviert:

Jenkins Security Advisory 2013-02-16

so dieses Stück Code kann nicht funktionieren:

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

Wurf:

Uncaught SyntaxError: Unexpected token : 

Cors ist nicht aktiviert Standardmäßig ... um ehrlich zu sein, kann ich nicht den Weg finden, diese Plugins zu installieren:

und dieser Code kann nicht so gut

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

Jede Idee arbeiten?

+0

Welchen Browser sind Sie benutzen? CORS wird unter IE10 nicht unterstützt. – GrantByrne

+0

@GrantByrne es hat teilweise Unterstützung in IE8 und IE9 über XDomainRequest –

+1

Ich benutze Chrom. IE ist scheiße ;-) – Mauro

Antwort

0

@Mauro, beginnend mit Jenkins 1.537 können Sie implementieren "jenkins.security.SecureRequester" und ermöglichen Sie die JSON-Anfrage zu arbeiten.

Sie müssen nur die Methode implementieren permit(StaplerRequest req, Object bean) und Ihre Validierungen haben dort und nur true zurück (basierend auf dem Prüfungsergebnis), die Anforderung zu ermöglichen.

Sobald Sie das getan haben, können Sie einfach den ersten Code verwenden, den Sie in Ihrer Frage erwähnt haben.

Beispiel SecureRequester Implementierung: -

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 
    } 

} 

Sie müssen dies als Plugin bauen und installieren Sie es in Ihnen Jenkins Setup zu arbeiten.

2

Es scheint jetzt ein Plugin zu geben, um JSON-Anfragen in die Whitelist aufzunehmen ... Gehe einfach zu den Plugins und suche nach JSON.

Das Secure Access-Plugin.

Verwandte Themen