我正在开发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请求的标头。 ?
答案 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"