AngularJS $http响应头

23

这个简单的问题困扰了我,我的Web Api Rest服务器响应头中有一个自定义值。在Firebug中,我可以看到它是: X-TotalPages 204 我尝试在我的AngularJS控制器中获取它,代码如下。 但我找不到任何好的示例来实现这个。 console.log(headers()['X-TotalPages']); 日志输出为'undefined'

var assets = angular.module("Assets", ['ui.bootstrap']);
assets.controller('AssetSearchController', function ($scope, $http) {
    $scope.test = 'very';
    $scope.getItems = function () {
        $http({ method: 'GET', url: 'http://localhost:57772/api/assets', params: { search: 1, page: 0, pageSize: 10 } }
            ).success(function (data, status, headers, config) {
                $scope.currentPage = 4;                
                console.log(headers()['X-TotalPages']);

            $scope.items = data;
        }).
        error(function (data, status) {
            console.log(JSON.stringify(data));
            console.log(JSON.stringify(status));
        });

    };

2
console.log(headers())的输出是什么? - mafis
2
请参考以下链接:https://dev59.com/RWQn5IYBdhLWcg3wLkkd - BKM
1
感谢您的快速回复。console.log(headers());返回Headers: [object Object],所以它是存在的。我已经查看了其他问题,但没有帮助。这是我的响应,似乎是由rest服务器返回的:[IMG]http://i58.tinypic.com/5lrzft.png[/IMG] - Jens Alenius
2
我的Rest服务中的web-config配置如下:<httpProtocol> <customHeaders> <add name ="Access-Control-Expose-Headers" value="X-TotalPages"/> <add name="Access-Control-Allow-Origin" value="*" /> <add name="Access-Control-Allow-Methods" value="POST,GET,DELETE,PATCH,PUT,OPTIONS" /> <add name="Access-Control-Allow-Headers" value="*" /> </customHeaders> </httpProtocol> - Jens Alenius
8
应该是headers('X-TotalPages')吗? - Wawy
显示剩余2条评论
3个回答

38
你应该使用:headers('X-TotalPages') (发布Wawy的答案以解决问题。)

5

在较新版本的AngularJS中,$http(url).then()取代了$http(url).success().error()的语法。我使用了以下方式:

$http(url).then(function(response){
            response.headers("X-TotalPages");
     });

只需使用response.headers()即可获取响应中所有附加的标头。


0

你可以使用 Promise 的成功回调函数

promise.then(function(resp){
            resp.headers().token(variablename)

     });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接