Bottle AngularJS — CORS отказывается работать

#javascript #python #angularjs #bottle

#javascript #python #angularjs #бутылка

Вопрос:

 Code:

@route('/characteristicsToBestWeb', method='OPTIONS')
def respondToCharToBestQueryWebOptions():
    response.headers['Access-Control-Allow-Origin'] = settings.allowed_web_origin
    response.headers['Access-Control-Allow-Credentials'] = 'true'
    # response.headers['Access-Control-Allow-Origin'] = '*'
    response.headers['Access-Control-Allow-Methods'] = 'POST, OPTIONS'
    response.headers['Access-Control-Allow-Headers'] = 'Origin, Accept,' 
                                                       ' Content-Type,' 
                                                       ' Cache-Control,' 
                                                       ' Pragma,' 
                                                       ' X-Requested-With,' 
                                                       ' X-CSRF-Token'

@route('/characteristicsToBestWeb', method='POST')
def respondToCharToBestWebQuery():
    response.headers['Access-Control-Allow-Origin'] = settings.allowed_web_origin
    response.headers['Access-Control-Allow-Credentials'] = 'true'
    # response.headers['Access-Control-Allow-Origin'] = '*'
    response.headers['Access-Control-Allow-Methods'] = 'POST, OPTIONS'
    response.headers['Access-Control-Allow-Headers'] = 'Origin, Accept,' 
                                                       ' Content-Type,' 
                                                       ' Cache-Control,' 
                                                       ' Pragma,' 
                                                       ' X-Requested-With,' 
                                                       ' X-CSRF-Token'
    render_response()
 

Как вы можете видеть, я указываю происхождение явно, и все же я получаю следующую ошибку в консоли, используя как ванильный $http сервис, так и Restangular .

в запросе post:

Не удается загрузить XMLHttpRequest http://vitamiter.com/characteristicsToBestWeb . В запрошенном ресурсе отсутствует заголовок ‘Access-Control-Allow-Origin’. Происхождение ‘http://dev.vitapersonal.com:9000 «следовательно, доступ к нему запрещен.

Хотя запрос ПАРАМЕТРОВ возвращается просто отлично.

Любая помощь очень ценится.

РЕДАКТИРОВАТЬ: отлично работает с XMLHttpRequest:

     var req = new XMLHttpRequest();
    req.open("POST", API_ROOT   'characteristicsToBest?cacheBuster='   Math.random().toFixed(5) , true);
    req.setRequestHeader("Content-Type", "application/json");
    req.setRequestHeader("Cache-Control", "no-cache, must-revalidate");
    req.setRequestHeader("Pragma", "no-cache");
    req.onload = function(){
        var response = this.response;
        $scope.$apply(function(){
            console.log(response)
        })
    }
    req.send(JSON.stringify(reqData));
 

WT * -angular?

Комментарии:

1. Вы смотрели на фактические заголовки, которые возвращаются?

Ответ №1:

попробуйте это :

 @hook('after_request')
def enable_cors():
    response.headers['Access-Control-Allow-Origin'] = '*'
    response.headers['Access-Control-Allow-Methods'] = 'PUT, GET, POST, DELETE'
    response.headers['Access-Control-Allow-Headers'] = 'Origin, Accept, Content-Type, X-Requested-With, X-CSRF-Token'