【发布时间】:2013-10-30 18:49:27
【问题描述】:
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。在 chrome 启动脚本中添加 --disable-web-security 标志可以消除这个问题,但它并不能解决 phonegap 的“总是 200 状态码”。
在 android 2.3 & phonegap 3.1 & angularjs 1.2.0rc3 上测试
【问题讨论】:
-
似乎这是一个 angularjs 问题:github.com/angular/angular.js/issues/4436
-
我在使用 angular 1.2.0rc3 和 phonegap 3.1 时遇到了同样的问题。即使服务器在我的拦截器中返回状态代码 401,它仍然显示为状态 200。同样的问题在 1.2 stable 中也存在。
-
顺便说一下,我在使用 angular 1.2.0rc2 时没有遇到这个问题,所以请您尝试一下并报告。
-
太糟糕了this 可能修复问题的补丁在稳定发布之前没有合并。
-
对我来说同样的问题。它不会捕获错误回调的 401、404 状态码,但它适用于向浏览器提供文件的 webserver
标签: angularjs cordova django-rest-framework