以下是我正在尝试进行基本身份验证的服务电话.我检查了多个博客无法找到解决方案.
当我收到以下错误时,有人可以帮我解决这个问题:
XMLHttpRequest cannot load
Response for preflight has invalid HTTP status code 401
我也无法在开发人员选项的网络选项卡中找到基本身份验证.
function() {
"use strict";
var APIservice = function($http, $base64) {
var getDetails = function(postData) {
$http.defaults.headers.common['Access-Control-Allow-Origin'] = "*";
$http.defaults.headers.common['Access-Control-Allow-Methods'] = "GET,PUT,POST,DELETE,OPTIONS";
$http.defaults.headers.common['Access-Control-Allow-Headers'] = "Content-Type, Authorization, Content-Length, X-Requested-With";
$http.defaults.headers.common['Content-Type'] = undefined;
console.log($http.defaults.headers.common.Authorization);
//console.log($http.defaults.headers.common.Authorization);
return $http.get('http://52.74.68.202:8080/rest/v1/step/all')
.then(function(response, headers, config) {
console.log(response);
return response;
});
};
return {
getDetails: getDetails
}
}
var module = angular.module('expframework');
module.factory("APIservice", APIservice);
module.run(['$http', '$base64', function($http, $base64) {
var authdata = $base64.encode('test:test');
$http.defaults.headers.common['Authorization'] = 'Basic ' + authdata;
}]);
module.config(['$httpProvider', '$base64', function($httpProvider, $base64) {
var authdata = $base64.encode('test:test');
$httpProvider.defaults.headers.common['Authorization'] = 'Basic ' + authdata;
}])
}();
它适用于Safari和模拟器,但不适用于Chrome和Firefox
请帮我解决这个问题.提前致谢.
最佳答案 由于你的服务器扔了401,我猜它试图验证预检请求.从
https://stackoverflow.com/a/15734032/1225328开始:
The 07001 clearly states that user credentials should be excluded.
[…]
Simply have the server (API in this example) respond to
OPTIONS
requests without requiring authentication.