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
]

Ссылка:

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