A resposta à solicitação de comprovação não passa na verificação de controle de acesso: Nenhum cabeçalho 'Access-Control-Allow-Origin' está presente no recurso solicitado

3

Eu fiz uma boa pesquisa nos últimos dias e não consigo fazer isso funcionar corretamente.

Estou usando o AngularJS & Webapp2 Python (Google App Engine).

Estou usando um recurso de fábrica:

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

Isso funciona muito bem no WebApp2 eu preciso adicionar:

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

Ou eu recebo um problema semelhante.

Meu problema é quando estou tentando enviar cabeçalhos personalizados por meio do AngularJS:

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

Quando faço, estou recebendo erros. Eu estou tentando adicionar um token para o cabeçalho antes de todas as chamadas HTTP.

Eu tentei adicionar isso ao WebApp2 python

 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'

Ainda estou recebendo o mesmo erro.

"OPÇÕES link 405 (Método não permitido)"

"XMLHttpRequest não pode carregar link . A resposta à solicitação de comprovação não passa na verificação de controle de acesso: Não 'Controle de acesso Cabeçalho -Allow-Origin 'está presente no recurso solicitado. "

Qualquer ajuda é muito apreciada. Estou fora de pistas, não tenho certeza do que mais tentar.

Obrigado em avançado.

Avanço

Eu encontrei uma maneira de fazer isso funcionar. Eu não estou mais usando:

{ method: 'GET', isArray: false,

Em vez disso, estou usando:

{ method: 'OPTIONS', isArray: false,

Além do código python:

def options(self):

Isso permitiu que eu enviasse cabeçalhos de autorização.

    
por ADL 29.03.2017 / 06:43

1 resposta

4

Você deve incluir:

    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'

Adicione isso à sua turma, incluindo sua visita.

O que acontece é que o seu pedido irá procurar opções. Hense o erro, "OPÇÕES".

    
por 29.03.2017 / 08:44