2015-12-14 51 views
-1

我有一些問題。來自外部網址的AngularJS應用程序數據。這是我的代碼。如何編寫授權標題。響應HTTP狀態401AngularJS HTTP頭

app.controller('AddressController', function($scope, $http){ 
$http.defaults.headers.common.Authorization = 'username password'; 
$http.get('http://URL/resources/cities?sortBy=cityId&sortOrder=asc&offset=0&limit=100'). 
    success(function(data, status, headers, config){ 
     $scope.posts = data; 
    }). 
    error(function(data, status, headers, config){ 

    }); 
}); 
+0

您使用哪種外部服務?我的意思是像Apache一樣。 – AndreaM16

+0

是啊阿帕奇服務器 –

+0

你把它整理出來了嗎? – AndreaM16

回答

0

我已經在過去類似的問題,更確切地說,一個CORS問題。 你可以閱讀更多關於跨域資源共享(CORS)

在幾句話,CORS當你有沒有發生設置訪問Web服務上的特定文件或數據的權限,在您的情況下,請在您的Apache2服務上訪問。 所以,當您嘗試訪問它們,它只是告訴你:「響應是HTTP狀態401,訪問被拒絕」

爲了解決這個問題,換句話說,允許訪問你的資源,你可以做兩件事情:

  • 解決您的Apache2 config文件
  • 您AngularJS控制器

我總是去了第一個選項,固定我的Apache2設置的權限。配置文件。 您可以在Apache2文件夾的某些文件夾中找到您的Apache2.conf文件。 只需登錄it's documentation即可。

現在我要告訴你我是如何解決這個問題的。簡而言之,我的Apache2服務器上有一些Jsons,我需要將它們提取到我的AngularJS控制器上,以便在我的Views中顯示一些數據。

我有這樣的事情:

myController.js

myApp.controller("myController", ["$scope","$http",function($scope, $http){ 

    var controller = this; 

    $http.get('http://localhost/main.json').success(function(dataForViews){ 

     controller.data = dataForViews; 

    }) 
}]); 

在我HTML視圖我只是請求的數據與語法,如:

<p> {{myController.dataForViews.Name}} </p> 

現在,爲了允許訪問,我把這段代碼放在我的Apache2的.config

<VirtualHost *:80> 


    ServerAdmin [email protected] 

    #Giving permissions 
    Header set Access-Control-Allow-Origin "*" 

    ############################ Main Page ########################### 
    Alias /main.json /var/www/html/myApp/data/mainPages/mainJSON.json 

    #When localhost/myApp, you get the application that runs on localhost:9000 
    #with its jsons 
    <Location /myApp> 
     ProxyPass http://localhost:9000/ 
     ProxyPassReverse http://localhost:9000/ 
    </Location> 

    #Same thing for scripts, css, etc, like: 
    <Location /scripts> 
     ProxyPass http://localhost:9000/scripts/ 
     ProxyPassReverse http://localhost:9000/scripts/ 
    </Location> 

</VirtualHost> 

我能夠允許訪問我的資源臥像這樣我的Apache2服務器上。 現在,你可以解決像我一樣,或者,如果你得到一些錯誤,你可能需要看Apache2 Documentation

如果你要那麼在AngularJS的方式解決它,看看:

我希望我已經幫助。