如何在angularjs中的http调用中传递头文件

时间:2015-03-15 12:14:37

标签: angularjs cordova http-headers angularjs-service angularjs-http

我正在开发cordova / phonegap中的移动应用程序。我正在使用angularJS作为前端。我在post请求中调用需要'API-KEY'属性作为标题的服务。

我展示了一些文件,并尝试了这些方式。但没有奏效。

postServiceDataWithHeader: function (url, data) {
            var deferred = $q.defer();
            var req = {
                method: 'POST',
                url: url,
                data: JSON.stringify(data),
                headers: {
                    'user-Token': $rootScope.user.APIKEY,
                    'content-Type': 'Application/Json'
                }
            }
            $http(req).success(function (data) {
                deferred.resolve(data);
            }).error(function (data, status, headers, config) {
                alert("Server failed to save data");
                deferred.reject(status);
            });
            return deferred.promise;
        } 

我尝试使用

添加标题
JodoModule.config(function ($routeProvider, $httpProvider) {
    $httpProvider.defaults.headers.post['user-Token'] = 'finding???';
    $httpProvider.defaults.headers.post['Content-Type'] = 'application/json; charset=utf-8';
});

和第二种方法是,

JodoModule.run(['$rootScope', '$http', function ($rootScope, $http) {    
    $http.defaults.headers.common.Authorization = 'Basic YmVlcDpib29w';    
}]);

我可以调用服务,但是在服务器端,我没有获得标头值,即使在fiddler中也没有传递头文件。

是什么原因?我是否需要在代码中添加任何其他内容以传递每个POST请求的标头。 ?

1 个答案:

答案 0 :(得分:1)

我已经使用你的一种方法为你制作了工作人员

http://plnkr.co/edit/36Dq6UXgyeMEXOzycrua?p=preview

app.config(function ( $httpProvider) {
    $httpProvider.defaults.headers.post['User-Token'] = 'finding???';
    $httpProvider.defaults.headers.post['Content-Type'] = 'application/json; charset=utf-8';
});

虽然如果它是CORS你必须添加'用户令牌'接受标题 即对于apache2

Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Headers "origin, user-token, x-requested-with, content-type"
Header set Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"