2013-10-30 46 views
2

Angularjs訴1.2.0rc3與PhoneGap的3.1和Django的休息框架

當發佈數據到我的API(登錄表單)我正在狀態200在angularjs中,無論是否使用適當的憑證進行身份驗證等。即使我只是在API視圖中返回HTTP_400,如下面的示例中所示,angularjs認爲這是一個HTTP_200狀態碼。 我確定後端API返回的HTTP_400在使用本地http服務器時工作正常。 我也可以通過調試api視圖來確認這一點。

下面是示例代碼。 Django的REST框架代碼:

class LoginView(APIView): 
    def post(self, request): 
     return Response({}, status=status.HTTP_400_BAD_REQUEST) 

和我angularjs控制器:

$scope.login = function() { 
    $http.post(API_URL, $scope.loginUser).then(
     function(response) { 
      console.log('STATUS : ' + response.status); 
      console.log('request OK'); 
     }, 
     function() { 
      console.log('request is NOT OK'); 
     )}; 

據我知道的PhoneGap使用本地file://協議,所以應該沒有CORS 相關的問題?

當在Chrome瀏覽器上相同時,我得到原始文件://不被Access-Control-Allow-Origin允許使用。將--disable-web-security標誌添加到chrome啓動腳本可消除此問題,但它不能解決phonegap的「always 200 status code」問題。

測試在Android 2.3 &的PhoneGap 3.1 & angularjs 1.2.0rc3

+0

看起來這是一個angularjs問題:https://github.com/angular/angular.js/issues/4436 – Robert

+0

我有使用角1.2.0rc3和phonegap 3.1相同的問題。即使服務器在我的攔截器中返回狀態代碼401,它仍然顯示爲狀態200.同樣的問題仍然存在於1.2穩定中。 – ADmad

+0

順便說一句,我沒有角1.2.0rc2這個問題,所以你可以請嘗試,並報告回來。 – ADmad

回答

0

升級到最新版本(1.2.9版本)AngularJS版本,現在它的解決。

相關問題