Как отправить непустой заголовок Origin в POST-запросе, если приложение запущено на localhost?

Я только что обновился до Django 4, и он включает билет 16010 с изменениями проверки происхождения .

Насколько мне известно, если вы запускаете приложение на localhost, браузеры не будут отправлять origin (они будут отправлять null). Поэтому, всякий раз, когда мы запускаем приложение Django на localhost, мы должны ожидать заголовок Origin: null в POST запросах.

Но с недавним изменением CSRF на localhost не может быть проверен из-за другого изменения - CSRF_TRUSTED_ORIGINS теперь необходимо иметь схему. release notes

Можно ли добавить непустой заголовок Origin при POSTing с localhost?

Чтобы было понятно, это не сработает

from corsheaders.defaults import default_headers

CORS_ALLOW_HEADERS = default_headers + ('Access-Control-Allow-*',)
CORS_ALLOWED_ORIGINS = [
    "http://localhost:8000",
    "http://127.0.0.1:8000",
]
CSRF_TRUSTED_ORIGINS = [
    "http://localhost:8000",
    "http://127.0.0.1:8000",
    ]
<form method="post">
    {% csrf_token %}
</form>
Origin checking failed - null does not match any trusted origins.

Заголовки запроса

Host: localhost:8000
Origin: null

Origin будет null во многих различных случаях. Моя проблема заключалась в том, что у меня было

<meta name="referrer" content="no-referrer">

в базовом шаблоне.

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