Подтвердить что ты не робот

Пользовательский заголовок HTTP в Django

Я использую собственный HTTP-заголовок для сигнатуры URL, который называется "знак", как получить такое настраиваемое значение заголовка HTTP в Django?

4b9b3361

Ответ 1

Продолжайте и используйте:

request.META.get('HTTP_{your uppercased header name}')

Обратите внимание, что в Django вы пишете имя заголовка заглавными буквами, а не черточками, но в запросе на клиенте вы должны писать его, используя черты вместо подчеркиваний (рабочие веб-серверы удаляют пользовательские заголовки с подчеркиваниями в целях безопасности).

Итак, пользовательский заголовок My-Custom-Header доступен request.META['HTTP_MY_CUSTOM_HEADER']

Ответ 2

Наконец, я нашел, как это сделать через

request.META('HTTP_{your uppercased header name}')

Ответ 4

Я пытался получить доступ к заголовку с приведенными выше ответами, используя этот код:

request.META.get('HTTP_{your uppercased header name}')

Но это не сработало для меня, и тогда я понял, что пользовательский заголовок не должен содержать underscore, поэтому я изменил underscore на dash и бума, все началось. Надеюсь, это поможет людям, как я.: -)

Ответ 5

Из документации Django:

https://docs.djangoproject.com/en/2.1/ref/request-response/#django.http.HttpRequest.META

За исключением CONTENT_LENGTH и CONTENT_TYPE, как указано выше, любые заголовки HTTP в запросе преобразуются в ключи META путем преобразования всех символов в верхний регистр, замены любых дефисов подчеркиванием и добавления префикса HTTP_ к имени. Так, например, заголовок с именем X-Bender будет сопоставлен с ключом META HTTP_X_BENDER.

Ответ 6

Начиная с Django 2.2, вы можете использовать словарь HttpRequest.headers, который обеспечивает регистр символов без учета регистра, например:

my_header = request.headers.get('x-my-custom-header')

См. django.http.HttpRequest.headers.