Доступ к выборке по **ссылке** из источника 'http://localhost:3000' был заблокирован политикой CORS.

Я пытаюсь обменять код авторизации на маркер доступа для интеграции с Google Calendar. Я следил за Using OAuth 2.0 for Web Server Applications. Примеры, показанные там, были для Flask, но я использую Django. Проблема в том, что я не могу перенаправить на authorization_url, потому что там написано

Доступ к выборке по ссылке от происхождения 'http://localhost:3000' был заблокирован политикой CORS: Ответ на предварительный запрос не проходит проверку контроля доступа: На запрошенном ресурсе отсутствует заголовок 'Access-Control-Allow-Origin'.

 @api_view(['GET'])
    def authorize(request):
        flow = google_auth_oauthlib.flow.Flow.from_client_secrets_file(
            CLIENT_SECRETS_FILE,
            scopes=SCOPES)
        flow.redirect_uri = 'http://localhost:3000/'
        authorization_url, state = flow.authorization_url(
            access_type='offline',
            include_granted_scopes='true')
        response = redirect(authorization_url)
        return response

Однако в моем settings.py у меня есть:

CORS_ALLOWED_ORIGINS = [
"http://localhost:3000",
"http://127.0.0.1:3000",]


MIDDLEWARE = [
    "corsheaders.middleware.CorsMiddleware",
    "django.middleware.common.CommonMiddleware",

    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

Вы можете взглянуть на этот пакет https://pypi.org/project/django-cors-headers/

Так что вы можете попробовать добавить происхождение в "Trusted Origins" в настройках Django CSRF_TRUSTED_ORIGINS = ['www.something.com']

или как это, для любого происхождения (не рекомендуется)

CORS_ALLOW_ALL_ORIGINS = True

Вернуться на верх