使用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
错误。
答案 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。