Django CSRF_TRUSTED_ORIGINS и http/2

Подозреваю, что сайты, использующие протокол http/2, не отправляют заголовок Host в запросах, например, переходя на /admin/

enter image description here

Это приводит к тому, что Django жалуется на Origin checking failed - does not match any trusted origins), хотя постинг осуществляется в точно такой же домен.

Эта ошибка не появляется на сайтах, использующих протокол http/1 на Django 4.2

Кроме добавления фактического домена в CSRF_TRUSTED_ORIGINS, есть ли что-нибудь еще, что я могу сделать?

Вы должны добавить SECURE_PROXY_SSL_HEADER в настройки Django:

CSRF_COOKIE_SECURE = True
CSRF_COOKIE_HTTPONLY = True
CSRF_TRUSTED_ORIGINS=['https://example.com']
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
USE_X_FORWARDED_HOST = True

Дополнительно установите заголовок прокси в конфигурации сервера Nginx:

proxy_set_header X-Forwarded-Proto $scheme;
Вернуться на верх