У меня есть приложение Flask, которое будет работать под Apache в процессе производства. У меня есть несколько статических файлов, но для них требуется аутентифицированный доступ. Поэтому использование X-Sendfile показалось разумным для ускорения доставки файлов после аутентификации:
flaskapp = flask.Flask()
flaskapp.use_x_sendfile = True
Затем, где я генерирую ответ:
return flask.send_file(filepath)
Под Apache вроде нормально работает. Проблема в том, что когда я запускаю сервер разработки:
# Use SharedDataMiddleware to deliver JS, CSS, icons, etc.
flaskapp.wsgi_app = SharedDataMiddleware(flaskapp.wsgi_app, {'/static': '/path/to/static'})
flaskapp.run(host='0.0.0.0', debug=True)
Когда я запускаю его таким образом с use_x_sendfile = True
, заголовок X-Sendfile появляется в фактическом ответе, и клиенту доставляется пустой файл (0 байт). Отключение X-Sendfile (и принуждение браузера к отбрасыванию кэшированного файла) устраняет проблему, поэтому кажется, что запускаемый Flask сервер Werkzeug не обрабатывает заголовок X-Sendfile. Есть ли способ разрешить серверу разработки обрабатывать X-Sendfile, или мне придется отключить это во время разработки?