我正在使用c3-angular.min.js。在客户端,我编写了一个拦截器,用于向发送到api服务器的每个请求添加授权头。 所有http请求似乎都有授权,而不是通过C3.js进行的授权。结果,我的图表收到401错误。没有太多文件可用。
如何在c3.js发出的请求中添加http请求标头。
$scope.config={
bindto: '#div1_chart',
data: {
'x':'x',
'types':{'count':'area'},
'names':{'count':'hits/day'},
'url':$scope.base_url,
'mimeType':'json'
},
axis : {
x : {
type : 'timeseries',
tick : {
rotate: 45,
multiline: false,
fit: false,
format : $scope.format
},
height:100
}
}
};
$scope.showGraph = function() {
$scope.chart = c3.generate($scope.config);
}
答案 0 :(得分:2)
我刚刚浏览了C3.js库的代码并找到了一个未记录的功能,它正是这样做的。如果你想依赖它,这取决于你,但它似乎完美无缺。我检查了GitHub repository的最新代码。
您可以通过向headers
对象或data
函数的对象添加load
对象来执行此操作。然后,headers
对象的每个键/值对将被转换为XMLHttpRequest请求头。这是图书馆的相关代码:
else if (args.url) {
$$.convertUrlToData(args.url, args.mimeType, args.headers, args.keys, function (data) {
$$.load($$.convertDataToTargets(data), args);
});
}
然后在convertUrlToData()
内:
if (headers) {
Object.keys(headers).forEach(function (header) {
req.header(header, headers[header]);
});
}
因此,在C3.js中使用标头的请求示例如下所示:
var chart = c3.generate({
data: {
url: '/data/c3_test.csv',
headers: {
"testheader": "testvalue"
}
}
});