帮助!在过去的两天里,我一直在努力解决这个问题。我正在使用Angular $ http服务来执行对我的REST API的XHR调用。
下面的代码“按原样”运行良好,但是,如果我添加Basic Authorization标头和/或request.data属性(当前在代码中转义),则调用将返回“HTTP505 - HTTP版本不受支持”在CORS飞行前(OPTIONS)。似乎HTTP505不是来自服务器,而是直接来自浏览器(Firefox和Chrome上的错误相同)。
当绕过CORS时,这非常有效。
this.send = function()
{
var deferred = $q.defer();
if (Object.keys(this.args).length != 0) {this.method = "POST"} else {this.method = "GET"};
var request =
{
method: this.method,
url: (ERS_API_URL + encodeURI('/' + this.resource)),
withCredentials: true,
headers:
{
//'Authorization':'Basic ' + btoa(ERS_API_USER + ":" + ERS_API_KEY),
'Accept': 'application/json',
},
//data: JSON.stringify(this.args),
cache: CacheFactory.get(cache_profile)
};
$http(request).then(function(response)
{
deferred.resolve(response.data);
return deferred.promise;
}, function(response)
{
// Technical error.
return deferred.promise;
});
return deferred.promise;
};