我有一个 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(并强制浏览器丢弃缓存的文件)解决了这个问题,因此 Werkzeug 服务器 Flask 运行似乎没有处理 X-Sendfile 标头。有没有办法让开发服务器处理 X-Sendfile,或者我在开发过程中被迫关闭它?