2015-03-17 1 views
2

Я получаю эту ошибку при использовании аутентификации пользователя webapp2. В запрошенном ресурсе нет заголовка «Access-Control-Allow-Origin».GAE weapp2 Ошибка доступа-разрешения-возникновения-ошибки

Как добавить заголовок доступа перед перенаправлением?

код

редирект: self.redirect(users.create_login_url(self.request.uri))

КОД:

class Authenticate(webapp2.RequestHandler): 
    def get(self): 
     user = users.get_current_user() 
     cookie_value = self.request.cookies.get('user') 

     if user==cookie_value and user!=None: 
      self.response.headers['Content-Type'] = 'text/plain' 
      self.response.write('Success') 
     else: 
      self.request.headers['Access-Control-Allow-Origin'] = '*' 
      self.redirect(users.create_login_url(self.request.uri)) 
+0

Вы пытаетесь перенаправить пользователя на страницу входа в систему с помощью запроса ajax ? Это не имеет смысла. – Greg

+0

В документации к веб-приложениям GAE говорится: «Использование службы пользователей» (https://cloud.google.com/appengine/docs/python/gettingstartedpython27/usingusers) –

ответ

0
def redirect(self, uri, permanent=False, abort=False, code=None,body=None) 

и

def redirect(uri, permanent=False, abort=False, code=None, 
             body=None,request=None, response=None) 

Так что, я думаю, вы должны назвать второй как (если вы хотите передать объект ответа):

return webapp2.redirect(users.create_login_url(self.request.uri),True,False,None 
                 ,None,None,self.response) 

См Webapp2 Source Code

+1

Но все же я получаю XMLHttpRequest не могу загрузить https://www.google.com/accounts/ServiceLogin сервис = ах и пассивный = истина & контины ... WbQ. В запрошенном ресурсе нет заголовка «Access-Control-Allow-Origin». Следовательно, источник https://xxx.appspot.com 'не допускается. Ошибка. Зачем? –

+2

У меня есть работа для моей проблемы. Я думаю, что на стороне клиента вы сделали ajax-вызов URL-адреса, который вызвал обработчик в вашем backend-коде, возможно, ajax ('/ login')? Вместо этого сделайте window.location = '/ login', который также запускает обработчик, но он не будет иметь доступ к перекрестному началу. – Thien

0

Перед self.redirect вызова, сделать

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

или любое значение вы хотите иметь для этого заголовка - self.redirect по умолчанию создает новый объект ответа, но вы можете изменить его с помощью

return self.redirect(users.create_login_url(self.request.uri, 
        response=self.response) 
+1

У меня все еще есть ошибка. Я проверил заголовок запроса в сетевом журнале, но не видел «Access-Control-Allow-Origin». Вероятно, эта строка кода не имела никакого эффекта? – Thien

+0

Нет, это не работает даже после добавления 'self.request.headers ['Access-Control-Allow-Origin'] = '*'', я получаю ошибку заголовка No 'Access-Control-Allow-Origin' –

+0

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

 Смежные вопросы

  • Нет связанных вопросов^_^