带XSendfi的Flask开发服务器

2024-04-28 12:43:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Flask应用程序,它将在Apache下运行。我有一些静态文件,但它们需要经过身份验证的访问。因此,使用X-Sendfile似乎可以在身份验证后加快文件传递:

flaskapp = flask.Flask()
flaskapp.use_x_sendfile = True

然后我在哪里生成响应:

^{pr2}$

在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,还是在开发过程中被迫关闭它?在


Tags: 文件to服务器身份验证trueappflaskwsgi
1条回答
网友
1楼 · 发布于 2024-04-28 12:43:05

flask文档提到server must supportX-Sendfile和werkzeug的dev server没有(文档中没有提到任何地方,通过werkzeug的源代码sendfile的grep没有返回匹配项)。在

将这种行为添加到服务器上可能不太难,但我不太确定支持这样的高级特性是否是开发服务器的优先事项。在

顺便说一句,当^{}的附加关键字参数被传递给werkzeug的^{}时,您不需要自己创建中间件,只需使用:

flaskapp.run(host='0.0.0.0', debug=True, static_files={'/static': '/path/to/static'})

相关问题 更多 >