У меня есть приложение django, запущенное в облаке Google (в кластере Kube) через Docker, обслуживаемое uwsgi (но я пробовал runserver manage.py, и это то же самое). По умолчанию облачный запуск принимает соединения как по http, так и по https.
Я хотел бы перенаправить пользователя на версию https, но облачный запуск не показывает правильную настройку заголовков.
У меня есть обработчик, который возвращает заголовки через: json.dumps(request.headers.__dict__['_store'])
И возвращаются соответствующие заголовки:
"x-forwarded-proto": ["X-Forwarded-Proto", "http"]
Но значение http никогда не меняется, даже когда я посещаю https версия сайта.
Как django должен правильно определять HTTP-запросы при запуске облака? Я не могу использовать
SECURE_PROXY_SSL_HEADER
для обнаружения и перенаправления HTTP-запросов на https, поскольку все они кажутся HTTP-запросами, поэтому вы получаете перенаправление l oop.
Однако, если я перейду по ссылкам в этом сообщении: https://www.jhanley.com/google-cloud-run-https-part-2/
на их ссылку «показать мне заголовки», значение действительно изменится с http на https. Это что-то вроде django? Или что-то вроде "облачного запуска на кубе"?
Размещение рассматриваемого приложения в чистом облачном режиме и посещение http-версии выполняет внутреннее перенаправление на HTTPS-версию и указывает причину: Non-Authoritative-Reason: HSTS
Именно этого я и пытаюсь достичь. Кажется, что заголовки, которые я получаю, исходят от внутренней маршрутизации, а не от самого исходного запроса при работе в режиме Anthos.