首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带X-Sendfile的Flask开发服务器

带X-Sendfile的Flask开发服务器
EN

Stack Overflow用户
提问于 2013-07-03 03:55:44
回答 1查看 3.9K关注 0票数 1

我有一个Flask应用程序,它将在生产中的Apache下运行。我有一些静态文件,但它们需要经过身份验证的访问权限。因此,使用X-Sendfile来加速身份验证后的文件传递似乎是合理的:

代码语言:javascript
复制
flaskapp = flask.Flask()
flaskapp.use_x_sendfile = True

然后在我生成响应的地方:

代码语言:javascript
复制
return flask.send_file(filepath)

它似乎在Apache下工作得很好。问题是当我运行开发服务器时:

代码语言:javascript
复制
# 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,或者在开发过程中被迫将其关闭?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-03 04:48:55

flask文档提到server must supportX-Sendfile,而werkzeug的开发服务器没有(文档中没有提到,通过werkzeug的sendfile源代码返回的grep没有返回任何匹配项)。

将此行为添加到服务器中可能并不太难,但我不太确定支持这些高级功能是否是开发服务器的优先事项。

顺便说一句,当run的额外关键字参数被传递给werkzeug的run_simple时,你不需要自己创建中间件,你只需要使用:

代码语言:javascript
复制
flaskapp.run(host='0.0.0.0', debug=True, static_files={'/static': '/path/to/static'})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17434687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档