Бэкенд приложения (django) и веб-интерфейс (реакция) размещаются в облаке Google в одном приложении. Я установил django -cors-headers и сослался на него в settings.py:
INSTALLED_APPS = (
...
'corsheaders',
...
)
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
...
]
CORS_ORIGIN_ALLOW_ALL = True
CORS_ORIGIN_REGEX_WHITELIST = (
'http://localhost:3000',
'https?\://myapp\.appspot\.com\/?',
'https?\://frontend-dot-myapp\.appspot\.com\/?',
)
Насколько я понял, CORS_ORIGIN_ALLOW_ALL уже должен решить эту проблему, но это не так, я только что получил немного отчаянно там пробовать вещи. CORS_ORIGIN_WHITELIST не работает для меня, поэтому CORS_ORIGIN_REGEX_WHITELIST.
Я ничего не изменил в этой настройке, но теперь появляется ошибка Cross-Origin. С момента последнего изменения кода я установил django -silk для профилирования приложения. Удаление, похоже, не решает проблему, поэтому я не уверен, имеет ли она отношение.
Помощь очень ценится!
в require.txt: django-cors-headers==3.2.1
EDIT
После большого количества проб и ошибок я обнаружил, что добавление последних двух строк в urls.py вызывает проблему:
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', views.api_root),
path('_ah/warmup/', views.service_status),
path('_ah/start/', views.service_status),
...
Однако я не понимаю, почему это вызывает CORS Ошибка или как ее исправить.