Angular $ http在飞行前呼叫期间返回带有标题的“505 - HTTP版本不受支持”

时间:2016-09-19 08:16:40

标签: javascript angularjs http-headers cors angular-http

帮助!在过去的两天里,我一直在努力解决这个问题。我正在使用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;
};

0 个答案:

没有答案