我有一块Angular JS,它可以读取Google云端硬盘中的json文件:
yummy.controller("slideCtrl", ['$scope', function($scope) {
}]).directive('slideElement', ['$interval', '$http',($interval, $http) {
return {
restrict: 'E',
link: function(scope, element, attrs) {
var path = 'https://googledrive.com/host/0B-74lO-UfPKoaDRySEsyQkZwNjQ/';
element.html('<div class="loading"><img src="img/loading.gif"></div>');
$http({
method: 'GET',
url: path + 'reduced.json'
}).then(function(response) {
console.log(response.data);
});
}]);
在Chrome和Firefox以及IE中,代码可以正常运行。但是在Safari中,出现以下错误:
Failed to load resource: Request header field Accept-Encoding is not allowed by Access-Control-Allow-Headers.
我尝试添加:
{ headers: { 'Accept-Encoding': undefined }}
但这不能解决我的问题。
如何使我的代码在Safari中工作?非常感谢你。
最佳答案
我有类似的问题,但这是因为服务器上的设置错误。
试试下面的代码:
.directive('slideElement', function($http) {
return {
restrict: 'E',
link: function (scope, element, attrs) {
var path = 'https://googledrive.com/host/0B-74lO-UfPKoaDRySEsyQkZwNjQ/';
element.html('<div>loading</div>');
$http({
method: 'GET',
url: path + 'reduced.json',
headers : {
'Content-Type' : 'application/json; charset=UTF-8'
}
}).then(function (response) {
console.log(response.data);
}, function(err){console.log("err")});
}
}
})
其中具有content-type的标头参数是新的。
希望对您有所帮助