Заголовок Content-Length не возвращается из ответа Pylons - PullRequest
2 голосов
/ 06 мая 2010

Я все еще пытаюсь Передать файл в ответ HTTP в Pylons . В дополнение к исходной проблеме я обнаружил, что не могу вернуть заголовок Content-Length, так что для больших файлов клиент не может оценить, сколько времени займет загрузка. Я пробовал

response.content_length = 12345

и я попробовал

response.headers['Content-Length'] = 12345

В обоих случаях ответ HTTP (просматриваемый в Fiddler) просто не содержит заголовок Content-Length. Как мне получить Pylons для возврата этого заголовка?

(О, и если у вас есть какие-либо идеи по поводу потоковой передачи файла, пожалуйста, ответьте на первоначальный вопрос - у меня нет идей.)

Редактировать: , хотя это не универсальное решение, для обслуживания статических файлов FileApp позволяет отправлять заголовок Content-Length . Для динамического контента это выглядит так: Alex Martelli - единственный вариант ответа.

Ответы [ 2 ]

1 голос
/ 06 мая 2010

Здесь есть немного кода промежуточного программного обеспечения здесь , который гарантирует, что все ответы получат заголовок длины содержимого, если они его пропустили. Вы можете настроить его так, чтобы в своем ответе вы установили какой-то другой заголовок (скажем, «X-The-Content-Length»), и промежуточное программное обеспечение использует его для определения длины контента, если последний отсутствует. Я рассматриваю все это как обходной путь для того, что я считаю ошибкой пилонов (ее кавалерное отношение к длине контента!), Но, очевидно, авторы пилонов не согласны со мной на этот счет, так что было бы неплохо по крайней мере найти обходные пути! 1003 *

0 голосов
/ 06 мая 2010

Попробуйте:

response.headerlist.append((str("Content-Length"), str(" 123456")))
...