Django в Azure - CSRF-ошибки для существующих URL в списке CSRF_TRUSTED_ORIGINS
Развернул в Azure в качестве веб-приложения и добавил приобретенное доменное имя, назовем его "i-heart-java.com". Я добавил URL в списки ALLOWED_HOSTS и CSRF_TRUSTED_ORIGINS, как https, так и http, включая дополнительные записи 'www.'. Приложение успешно загружается по этим URL, и моя страница работает по большей части, за исключением входа в любую часть приложения ТОЛЬКО С МОИМ КЛЮЧЕВЫМ ДОМЕНОМ, в противном случае вход работает нормально с доменом azure по умолчанию. Ошибка показывает
2024-09-24T14:24:35.1649753Z Forbidden (Origin checking failed - https://www.i-heart-java.com does not match any trusted origins.): /admin/login/
Мои настройки следующие, реальные имена по понятным причинам убраны:
ALLOWED_HOSTS = [
'https://127.0.0.1:8000',
'127.0.0.1',
'https://i-heart-java-XXX.eastus-0X.azurewebsites.net/',
"http://i-heart-java.com",
'https://i-heart-java.com/',
"http://www.i-heart-java.com",
'https://www.i-heart-java.com/',
..others..,
]
SESSION_COOKIE_SECURE = True
SECURE_SSL_REDIRECT = False
CORS_ALLOW_ALL_ORIGINS = True
CSRF_COOKIE_SECURE = True
CSRF_COOKIE_HTTPONLY = True
CSRF_USE_SESSIONS = False
CSRF_COOKIE_SAMESITE = 'Lax'
CSRF_TRUSTED_ORIGINS=[
"https://i-heart-java.com",
"http://i-heart-java.com",
"https://www.i-heart-java.com",
"http://www.i-heart-java.com",
..others..,
]
Что может быть причиной срабатывания CSRF только при входе через мой пользовательский домен, хотя все мои имена хостов и URL находятся в правильных местах?
Может ли это быть пользовательский DNS домена? (пожалуйста, скажите, что нет)
Я повторно подтвердил настройки DNS пользовательского домена в веб-приложении Azure, а также у хостера домена. Я также добавил все виды форматов URL-адресов моего пользовательского домена, которые только мог придумать. А также попытался настроить соответствующие параметры CSRF и SSL
Вам не нужны записи http://
, если только вы специально не обслуживаете сайт через http
и https
. Если вы внедряете HTTPS с помощью SESSION_COOKIE_SECURE = True
и CSRF_COOKIE_SECURE = True
, сосредоточьтесь только на https
версиях.
Обновить ALLOWED_HOSTS:
ALLOWED_HOSTS = [
'127.0.0.1',
'i-heart-java-XXX.eastus-0X.azurewebsites.net',
'i-heart-java.com',
'www.i-heart-java.com',
]
- Последние изменения в Django требуют использования полной схемы (например,
https://
) вCSRF_TRUSTED_ORIGINS
. Кроме того, при необходимости вы должны включить подстановочный знак для поддоменов.
CSRF_TRUSTED_ORIGINS = [
"https://*.i-heart-java.com", # Wildcard for any subdomains
]
Ссылка: