如何传递HTTP标头以从API发出请求?

时间:2016-04-04 00:06:30

标签: angularjs api http

使用Angular,我尝试使用请求传递HTTP标头“App-Id”和“App-Key”以从this API获取数据。

我尝试像这样设置标题:

 $http.defaults.headers.common["App-Id"] = '5a3d8b8d';
 $http.defaults.headers.common["App-Key"] = '738e9aca62e7465446b7be8fe4219ffa';

但我收到Response for preflight is invalid错误。

http://jsfiddle.net/9Ymvt/4573/

3 个答案:

答案 0 :(得分:1)

我不认为这是对你的问题的完整答案,但这是我在项目中的内容:

var app = angular.module('app', ['ngRoute']);
app.config(function($routeProvider) {
  // code for routes
});
app.config(['$httpProvider', function($httpProvider) {
  $httpProvider.defaults.useXDomain = true;
  delete $httpProvider.defaults.headers.common['X-Requested-With'];
}]);

这解决了我的CORS问题。如果你想做另一种类型的标题,你可能可以find your answer here

答案 1 :(得分:1)

预检错误与CORS有关。您可能希望查看rack-cors以通过javascript启用跨站点api调用。这里有一个手动配置:https://gist.github.com/dhoelzgen/cd7126b8652229d32eb4

答案 2 :(得分:1)

在每个请求的基础上向.vimrc请求添加标头

要基于每个请求向$http请求添加标头,请将它们添加到$http配置对象的headers属性中。

$http

代码出现了飞行前错误,因为它使用了错误的网址。正确的基本网址为var xheaders = {}; xheaders["App-Id"] = '5a3d8b8d'; xheaders["App-Key"] = '738e9aca62e7465446b7be8fe4219ffa'; var xurl = 'https://uk.bookingbug.com/api/v1'; var configObj = { method: 'GET', url: xurl, headers: xheaders }; $http(configObj) .then(function onFulfilled(response) { console.log(response); vm.headers = response.config.headers; vm.data = response.data }).catch( function onRejection(errorResponse) { console.log("Error: ", errorResponse.status); console.log(errorResponse); vm.error = errorResponse; }) ; ,支持https://uk.bookingbug.com/api/v1标头和CORS。

DEMO on JSFiddle