Можно ли установить размеры загрузки BLOB-объектов в приложениях GAE теперь, когда заголовок Content-Length не разрешен?
После обновления API AppEngine, которое вышло несколько недель назад, в документации класса Python Response появился замечательный раздел "Disallowed HTTP Response Headers", в котором объясняется, что перечисленные заголовки нельзя устанавливать в целях безопасности.
Это все хорошо, за исключением того, что теперь все мои загрузки BLOB-объектов имеют неизвестную длину, в результате чего все основные браузеры показывают неизвестные показатели прогресса длины! Достаточно сказать, что пользователи (и я) находят это довольно раздражающим для больших загрузок, поскольку нет никакого способа предположить, сколько времени займет загрузка, или как далеко они могут продвинуться. Я исправил это раньше, установив Content-Length
заголовок, основанный на информационных записях большого двоичного объекта в хранилище данных, но теперь, когда это запрещено, есть ли другой способ сделать это? Любые идеи высоко ценится!
1 ответ
Ваши файлы передаются с
Transfer-Encoding: Chunked
Тогда можно через HTTP отправить эти файлы без Content-Length:
заголовок. См. HTTP/1.1 RFC по кодированию передачи по частям. Я предполагаю, что вы должны быть в состоянии определить свой собственный обработчик для таких методов, как get и т. Д., И создать себе HTTP-ответы, используя webapp.WSGIApplication. OTOH, Адриан Головатый так и не получил ответа на этот же вопрос.