我有一块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的标头参数是新的。

希望对您有所帮助

09-25 22:09