我有这段代码:
$http
.post('/api/login', $scope.user)
.success(function (data, status, headers, config) {
// code
})
.error(function (data, status, headers, config) {
// code
});
它可以工作,但即使服务器返回异常(状态500)或错误请求(400)或未授权请求(401),它仍然会调用成功处理程序。
这是来自服务器的示例响应(我的服务器是ASP.NET Web API 2):
HTTP/1.1 400 Bad Request
Cache-Control: no-cache
Pragma: no-cache
Expires: -1
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?QzpcRG9jdW1lbnRzXFRpbWVUYWJsZVxqYW4tMjAxNFwxMVxUaW1lVGFibGVcVGltZVRhYmxlXGFwaVxsb2dpbg==?=
X-Powered-By: ASP.NET
Date: Sun, 23 Feb 2014 10:56:09 GMT
Content-Length: 0
答案 0 :(得分:0)
您需要确保在拦截器中为'responseError'属性返回被拒绝的承诺。如果您只是返回响应或未实现'responseError',则无论状态代码如何,成功函数将始终运行。