Лучшая практика для того, чтобы обработать HTTP ВОЗГЛАВЛЯЕТ запрос с Django на Механизме Приложения

Я получаю ГЛАВНЫЕ запросы в своем приложении и задаюсь вопросом на лучшем способе обработать их. Опции:

  • преобразуйте их в, ДОБИРАЕТСЯ, процесс ДОБИРАЮТСЯ обычно, тогда:
    • разделите тело (хотя я не уверен как - response.content = '' кажется, не делает это.
    • кажется, что механизм приложения авторазделяет тело, давая предупреждение "Отбрасывание неожиданного тела в ответ на ГЛАВНЫЙ запрос"

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

  • Обработайте каждый ГЛАВНЫЙ запрос особенно:
    • это означает, что я мог избежать доступа DataStore в некоторых (многие?) случаи.
    • Существует риск, по-видимому, что промежуточному программному обеспечению, которое устанавливает заголовок Довольной длины, будут препятствовать делать так этим подходом.

Что-либо еще? Который я должен сделать? Использование Механизма Приложения имеет значение здесь? Есть ли тонкие детали; если так, есть ли соответствующее промежуточное программное обеспечение для использования? Для преобразования для ПОЛУЧЕНИЯ, 'request.method =, "СТАНОВЯТСЯ" достаточными (это, кажется, работает)?

9
задан Paul Biggar 30 December 2009 в 01:24
поделиться

1 ответ

Намерены ли вы, чтобы ваше заявление обрабатывало запросы HEAD, или они поступают из какого-то анонимного источника? Вы, конечно же, не обязаны выполнять запрос HEAD. Вы можете просто вернуться с кодом статуса 405 (Метод не разрешен) и предоставить заголовок Allow с GET или что вы хотите обрабатывать.

Я не думаю, что ручная настройка request.method на GET имеет смысл; по всей вероятности, вы просто возвращаете ответ, который больше того, что хотел запросивший. Они просто хотели видеть заголовки ответа. Если вы не хотите обрабатывать HEAD, сделайте подход 405 и Allow header.

Обычно клиент посылает HEAD запрос, потому что он пытается быть умным, чтобы не обрабатывать полный ответ, если в этом нет необходимости. Они проверяют, не изменилась ли длина Content-Length с момента последнего просмотра ответа, или они хотят увидеть заголовок Last-Modified или Expires.

Конечно, ваше приложение отлично справляется с обработкой HEAD-запросов, но вам не нужно этого делать.

11
ответ дан 4 December 2019 в 20:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: