【发布时间】:2016-08-08 07:46:05
【问题描述】:
我正在使用 saiku 服务器进行数据分析,该服务器在一个 tomcat 中运行,我在另一个 tomcat 中运行我的 spring boot 应用程序,我想从 saiku 服务器获取数据到我的 spring boot 应用程序以从一个 tomcat 生成图表(即)服务器到另一个 tomcat 服务器。我遇到了错误,例如
这是我从 saiku 获取数据到我的 springboot 应用程序的代码
<script type="text/javascript" data-ng-hide=true>
var myClient = new SaikuClient({
server: "http://localhost:8080/saiku",
path: "/rest/saiku/embed",
user: "admin",
password: "admin"
});
myClient.execute({
file: "/homes/home:admin/sample_reports/.saiku",
htmlObject: "#saiku2",
render: "chart",
mode: "line",
chartDefinition: {
width: 560,
colors: ['grey','red','blue'],
extensionPoints: {
legend: true,
legendShape: 'circle',
legendSize: {width: '100%'},
legendLabel_textStyle: "#990000",
legendFont: 'normal 11px "Open Sans"'
}
},
zoom: true
});
function displayChart(path, htmlDiv){
myClient.execute({
file: path,
htmlObject: "#"+htmlDiv,
render: "chart",
mode: "line",
chartDefinition: {
width: 560,
colors: ['grey','red','blue'],
extensionPoints: {
legend: true,
legendShape: 'circle',
legendSize: {width: '100%'},
legendLabel_textStyle: "#990000",
legendFont: 'normal 11px "Open Sans"'
}
},
zoom: true
});
}
$(document).ready(function(){
console.log("Hello world")
});
$.get( "http://localhost:8080/saiku/rest/saiku/api/repository?type=saiku,sdb", function( data ) {
console.log(data);
console.log(data.length);
var response = (data);
for(var i=0;i<data.length;i++){
console.log("JSON ==>"+data[i].type);
// get reports only under homes
if(data[i].type=="FOLDER" && data[i].name=="homes"){
console.log("data[i].repoObjects ==>"+data[i].repoObjects)
// for file only we generate the saiku reports
if(data[i].repoObjects && data[i].repoObjects.length>0){
console.log("i am inside"+data[i].repoObjects.length)
var arr = [];
arr = (data[i].repoObjects);
for (var k=0;k<arr.length;k++){
console.log("repo ==>"+arr[k].name);
if(arr[k].name=="home:admin"){
// retrieve all reports under home:admin folder
console.log("repo ==>"+JSON.stringify(arr[k].repoObjects[0].repoObjects));
// arr[k] is the home:admin folder. iterate all the files
for(var z=0;z<arr[k].repoObjects.length;z++){
// this is now the list of files and folders under homes/home:admin
if(arr[k].repoObjects[z]){
var folderObjects =new Array(arr[k].repoObjects[z].repoObjects);
console.log(arr[k].repoObjects[z].repoObjects.length)
for(var x=0;x<arr[k].repoObjects[z].repoObjects.length;x++){
console.log(x)
if(arr[k].repoObjects[z].repoObjects[x]){
console.log(arr[k].repoObjects[z].repoObjects[x].path)
displayChart(arr[k].repoObjects[z].repoObjects[x].path,"saiku"+x);
}
}
}
}
}
}
}
}
}
});
</script>
我的错误是
XMLHttpRequest cannot load http://localhost:8080/saiku/rest/saiku/embed/export/saiku/json?formatter=fl…ned&file=%2Fhomes%2Fhome%3Aadmin%2Fsample_reports%2F.saiku&_=1470641532009. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8081' is therefore not allowed access. The response had HTTP status code 401
【问题讨论】: