Я изучаю Django и создал страницу, которая отображает все HTTP-заголовки в запросе, используя словарь request.META. Я запускаю его локально, и он показывает мне странное количество заголовков, таких как «TEMP», содержащие путь к моей временной папке Windows или «PATH» с моими параметрами полного пути и гораздо больше информации, которую я действительно не нахожу необходимо предоставить доступ к моим запросам браузера (например, к установленным приложениям). Нормально ли это? Что мне с этим делать?Список заголовков HTTP
ответ
Итак, давайте быстро перейти в исходный код Джанго:
Джанго/ядра/обработчиков/wsgi.py
class WSGIRequest(http.HttpRequest):
def __init__(self, environ):
...
self.META = environ
self.META['PATH_INFO'] = path_info
self.META['SCRIPT_NAME'] = script_name
...
Этот обработчик используется по умолчанию в runserver
команды и любой другой сервер WSGI , Словарь environ
поставляется с базового веб-сервера. И он заполнен множеством данных. Вы можете прочитать больше о environ
словаря здесь в официальных WSGI документы:
https://www.python.org/dev/peps/pep-0333/#environ-variables
отметить также, что любой веб-сервер бесплатно добавить свои собственные переменные environ
. Я предполагаю, что именно поэтому вы видите такие вещи, как TEMP
. Вероятно, они используются внутри веб-сервера.
Если вы хотите получить только заголовки, то wsgi обязывает, что заголовки должны начинаться с префикса HTTP_
, за исключением CONTENT_TYPE
и CONTENT_LENGTH
.
Документы Django вводят в заблуждение. Поле META
содержит больше, чем только заголовки. Это не является ни правильным, ни неправильным, так оно и есть. Особое внимание следует уделять при работе с META
. Утечка некоторых данных может быть серьезной проблемой безопасности.
- 1. Добавление заголовков HTTP-заголовков
- 2. HTTP - Несколько заголовков трейлеров
- 3. Защита HTTP-заголовков
- 4. Несколько заголовков авторизации HTTP?
- 5. Уплотнение заголовков HTTP-ответа?
- 6. Захват атрибутов http-заголовков
- 7. $ HTTP-перехватчики заголовков
- 8. Синтаксис заголовков HTTP-статуса
- 9. Анализ заголовков HTTP
- 10. Удаление/скрытия заголовков HTTP
- 11. Python-- Извлечение заголовков http
- 12. PHP-перенаправление с использованием заголовков заголовков заголовков() и HTTP-запросов
- 13. Исключение SoapFault: [HTTP] Ошибка Получение заголовков http
- 14. Построение HTTP-заголовков для HTTP-сервера Java
- 15. Добавление заголовков в список
- 16. Удаление заголовков http в Apache2
- 17. Добавление заголовков HTTP в JSP
- 18. Настройка угловых заголовков $ http глобально
- 19. IE версия HTTP-заголовков Firefox
- 20. Разбор HTTP-заголовков в C++
- 21. Чтение http заголовков для расширения
- 22. Имена заголовков HTTP в Go
- 23. Чтение HTTP-запроса пользовательских заголовков
- 24. Что такое кодировка заголовков http
- 25. изменение заголовков http после вывода
- 26. Настройка заголовков HTTP в InputStreamEntity
- 27. отображает содержимое заголовков HTTP-ответа
- 28. Ionic2 По умолчанию заголовков HTTP
- 29. $ http(). Catch чтения заголовков ответов
- 30. Construct NET :: HTTP-файлы заголовков
Спасибо, причудливый. Тогда, я полагаю, только те, которые начинаются с «HTTP», фактически отправляются агентом пользователя на сервер. Я изменил свой код, чтобы разобраться во всем остальном, и теперь заголовки, которые я получаю, наконец похожи на то, что я привык видеть. –
@ RayP. Да, за исключением заголовков 'CONTENT_LENGTH' и' CONTENT_TYPE' (непоследовательных, я знаю). Другими вещами, которые отправляются клиентам, являются 'REQUEST_METHOD',' PATH_INFO', 'QUERY_STRING' и' SERVER_PROTOCOL' (да, это вводит в заблуждение, его следует называть 'REQUEST_PROTOCOL'). Некоторые из них, вероятно, доступны через различные механизмы Django. Я думаю, что это полный список информации заголовка. – freakish