На запрашиваемом питоне ресурса отсутствует заголовок «Access-Control-Allow-Origin» - PullRequest
0 голосов
/ 22 февраля 2019

Когда этот API (на размещенном сервере) вызывает во внешнем интерфейсе, он перенаправляет в Google OAuth для входа в Google в то время, когда появляется эта ошибка.

Доступ к выборке в 'https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=114887XXXXX7-rsXXXXXXXXXXXXXXXXXXXrg.apps.googleusercontent.com&redirect_uri=https%3A%2F%2Fpricemonitor.info%2Fyoutube%2Foauth2callback&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.force-ssl&state=bmZbXXXXXXXXXXXXXXXXXXXXFS&access_type=offline&include_granted_scopes=true' (перенаправлено из 'https://pricemonitor.info/youtube') из источника' https://pricemonitor.info' заблокировано политикой CORS: Ответ на предпечатный запрос не проходит проверку контроля доступа: Нет 'Access-Control-Allow-Origin'Заголовок присутствует в запрошенном ресурсе. Если непрозрачный ответ удовлетворяет вашим потребностям, установите режим запроса «no-cors», чтобы получить ресурс с отключенным CORS.

Среда, которую я использую:

Backend - Python

Front End - реагировать

Веб-сервер r- WEBHOSTPYTHON

Здесь я добавляю серверный код для goggle oAuthentication

@app.route('/oauth2callback',methods=['GET', 'POST'])
@cross_origin(origins='*',allow_headers=['Access-Control-Allow- 
Origin'])
def oauth2callback():
    # Specify the state when creating the flow in the callback so that 
it can
    # verify the authorization server response.
    state = flask.session['state']
    flow = google_auth_oauthlib.flow.Flow.from_client_secrets_file(
        CLIENT_SECRETS_FILE, scopes=SCOPES, state=state)

    flow.redirect_uri = flask.url_for('oauth2callback', 
_external=True)

    # Use the authorization server's response to fetch the OAuth 2.0 
tokens.
    authorization_response = flask.request.url
    #authorization_response = flask.request.headers['Access-Control- 
Allow-Origin'] = '*'
    authorization_response = flask.Response.headers.set['Access- 
Control-Allow-Origin'] = '*'
    authorization_response = authorization_response.replace('http', 
'https')
    client_secret = 'lDXXXXXXXXXXXXXXXXZoK'
    flow.fetch_token(client_secret=client_secret, 
authorization_response=authorization_response)

    # Store the credentials in the session.
    # ACTION ITEM for developers:
    #     Store user's access and refresh tokens in your data store if
    #     incorporating this code into your real app.
    credentials = flow.credentials
    flask.session['credentials'] = {
        'token': credentials.token,
        'refresh_token': credentials.refresh_token,
        'token_uri': credentials.token_uri,
        'client_id': credentials.client_id,
        'client_secret': credentials.client_secret,
        'scopes': credentials.scopes
    }
    data1=flask.redirect(flask.url_for('index'))
    data1.headers['Access-Control-Allow-Origin'] = '*'
    return data1 

экран не хватает внешнего интерфейса при получении ошибки enter image description here

...