Доступ к выборке по **ссылке** из источника '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