Назад | Перейти на главную страницу

Ответ на предполетный запрос не проходит проверку контроля доступа: на запрошенном ресурсе отсутствует заголовок Access-Control-Allow-Origin.

Я провел немало поисков за последние несколько дней, и я не могу заставить это работать должным образом.

Я использую AngularJS и Webapp2 Python (Google App Engine).

Я использую заводской ресурс:

app.factory('facTest', ['$resource', function ($resource) {
    return $resource('http://localhost:10080/:route', {}, {
        GetTest: { method: 'GET', isArray: false, params: { route: "gettest", user_id: '@user_id' } }
    })
}]);

Это отлично работает, однако в WebApp2 мне нужно добавить:

self.response.headers['Access-Control-Allow-Origin'] = '*'

Или у меня похожая проблема.

Моя проблема в том, что я пытаюсь отправить пользовательские заголовки через AngularJS:

$http.defaults.headers.common.Authorization = 'Basic ' + "123454";

Когда я это делаю, я получаю ошибки. Я пытаюсь добавить токен в заголовок перед всеми HTTP-вызовами.

Я попытался добавить это в python WebApp2

 self.response.headers['Access-Control-Allow-Headers'] = 'X-Requested-With, Content-Type, X-Codingpedia, Authorization'
 self.response.headers['Access-Control-Allow-Methods'] = 'GET, POST, DELETE, PUT, OPTIONS'

Я все еще получаю ту же ошибку.

"ПАРАМЕТРЫ http: // локальный: 10080 / gettest? user_id = 1 405 (метод запрещен) "

"XMLHttpRequest не может загрузить http: // локальный: 10080 / gettest? user_id = 1. Ответ на предполетный запрос не проходит проверку контроля доступа: на запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin» ».

Любая помощь приветствуется. Я не знаю, что еще попробовать.

Заранее спасибо.

Прорыв, достижение, открытие

Я нашел способ заставить его работать. Я больше не использую:

{ method: 'GET', isArray: false,

Вместо этого я использую:

{ method: 'OPTIONS', isArray: false,

В дополнение к коду Python:

def options(self):

Это позволило мне отправлять заголовки авторизации.

Вы должны включить:

    def options(self, *args, **kwargs):
      self.response.headers['Access-Control-Allow-Origin'] = '*'
      self.response.headers['Access-Control-Allow-Headers'] = 'Origin, X-Requested-With, Content-Type, Accept, Authorization'
      self.response.headers['Access-Control-Allow-Methods'] = 'POST, GET, PUT, DELETE'

Добавьте это в свой класс, в том числе получите.

Что происходит, так это то, что ваш запрос будет искать варианты. Отсюда и ошибка «ОПЦИИ».