2

Angularjs v. 1.2.0rc3 与 phonegap 3.1 和 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 file:// is not allowed by Access-Control-Allow-Origin。将 --disable-web-security 标志添加到 chrome 启动脚本可以消除此问题,但不能解决 phonegap 的“始终为 200 状态代码”。

在 android 2.3 & phonegap 3.1 & angularjs 1.2.0rc3 上测试

4

2 回答 2

1

确认已在 AngularJS 1.2.3 中修复

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

于 2014-02-18T22:32:27.113 回答
0

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

于 2014-01-23T15:04:08.383 回答