Какой правильный формат для получения значения заголовка Django, если имя заголовка содержит подчеркивание `_` - PullRequest
0 голосов
/ 29 мая 2018

Моя команда CURL: -

curl -X POST \
  http://localhost:8000/sendData/ \
  -H 'authorization: Token b67d31c42d98b3c97b28c737629dca63ef5043fc' \
  -H 'cache-control: no-cache' \
  -H 'client_cdata: virat' \
  -H 'clientdata: sachin' \
  -H 'content-type: multipart/form-data;' \
  -H 'postman-token: ed70d17c-ecf6-66c7-619e-85eac7d62803' \
  -F purchasID=23124212 \
  -F purchaserAmount=4320'

Я пытался получить данные заголовка

, используя request.META['HTTP_CLIENTDATA']

Я получил значение sachin такое же, как когда япопытаться получить request.META['HTTP_CLIENT_CDATA'], это не работает, он показывает ошибку *** KeyError.

Какой правильный формат для получения значения заголовка, если имя заголовка содержит _?

Я не могу изменить данные заголовка. Поскольку этот API вызывается другим доменом (результат предоставлен другим сайтом или сервером), я создаю конечные точки API.

Заранее спасибо.

1 Ответ

0 голосов
/ 31 мая 2018

Исходя из предположения, что вы, вероятно, используете либо Nginx, либо Apache в качестве обратного прокси-сервера, заголовки, содержащие подчеркивания, отбрасываются этими серверами, чтобы избежать проблем при сопоставлении таких заголовков с переменными CGI.

Если вам нужно поддержать подчеркивание - что звучит так, как будто вы делаете это, потому что они принадлежат третьей стороне - тогда вам нужно включить поддержку.

Для Nginx ( ссылка )

underscores_in_headers on;

Для Apache ( ссылка )

SetEnvIfNoCase ^client.cdata$ ^(.*)$ fix_client_cdata=$1
RequestHeader set client-cdata %{fix_client_cdata}e env=fix_client_cdata
...