Phonegap angularjs $ http.post()始终返回http代码200

时间:2013-10-30 18:49:27

标签: angularjs cordova django-rest-framework

Angularjs v.1.2.0rc3 with phonegap 3.1 and django-rest-framework

将数据发布到我的API(登录表单)时,无论是否使用正确的凭据等进行身份验证,我都会在angularjs中获得状态200.即使我只是在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浏览器上相同时,我得到 Origin文件:// Access-Control-Allow-Origin 不允许。将--disable-web-security标志添加到chrome启动脚本可以消除此问题,但它无法解决phonegap的“始终200状态代码”。

在Android 2.3&上进行测试phonegap 3.1& angularjs 1.2.0rc3

2 个答案:

答案 0 :(得分:1)

在AngularJS 1.2.3中确认已修复

请参阅此处的行: https://github.com/angular/angular.js/blob/v1.2.3/src/ng/httpBackend.js#L122

答案 1 :(得分:0)

升级到最新版本(1.2.9版)AngularJS版本,现已解决。