我正在尝试使用Angular创建一个使用我的API的简单应用。我正在使用VM来运行代码,并且我在我的计算机上访问它,因此要从我的机器调用API,我可以使用cURL或任何其他HTTP客户端,一切正常。一个例子:
curl -k --user damien@email.com:密码https://api.my.domain.com/v1/traveler/get
这将返回一个旅行者名单。我需要“信任”证书,因为它无效。因此,首先在浏览器上调用将返回net::ERR_INSECURE_RESPONSE
,所以我只是转到API URL并添加异常,现在我不再有这个问题了。然后我不得不添加基本身份验证,它似乎工作。让我们看看我的代码是什么,如果您发现任何错误,请告诉我,我正在遵循本教程使用外部API:http://www.toptal.com/angular-js/a-step-by-step-guide-to-your-first-angularjs-app
app.js:
angular.module('TravelerApp', [
'TravelerApp.controllers',
'TravelerApp.services'
]);
services.js:
angular.module('TravelerApp.services', [])
.factory('TravelerAPIService', function($http) {
var travelerAPI = {};
$http.defaults.headers.common.Authorization = 'Basic ABC743HFEd...=';
travelerAPI.getTravelers = function() {
return $http({
method: 'GET',
url: 'https://api.my.domain.com/v1/traveler/get'
});
}
return travelerAPI;
});
最后,controllers.js:
angular.module('TravelerApp.controllers', [])
.controller('travelersController', function($scope, TravelerAPIService) {
$scope.travelersList = [];
TravelerAPIService.getTravelers()
.success(function(data) {
console.log('SUCCESS');
$scope.travelersList = data;
})
.error(function(data, status) {
console.log('ERROR');
$scope.data = data || "Request failed";
$scope.status = status;
});
});
错误状态代码为0,错误数据为空字符串。
答案 0 :(得分:4)
精密工业:
我对HTTP POST查询有相同的行为。 我确定:
最后我找到了答案:
因为我(可能是你)正在发送一个自签名的httpS服务器。 Chrome标记为无安全。
我通过将地址放在浏览器上并手动接受证书来解决此问题。
可能相关:XMLHttpRequest to a HTTPS URL with a self-signed certificate
答案 1 :(得分:1)
我建议使用受信任的CA签名SSL证书而不是自签名证书来解决您的问题,因为大多数浏览器都不接受Google Chrome,Firefox等自签名证书。