我有一个基于Flask的python应用程序似乎运行正常。重新安装我的开发笔记本电脑并且不更改我的git存储库中的任何内容后,Flask应用程序现在不再提供静态文件。当我启动我的开发服务器时,应用程序启动并且服务器日志告诉我一切正常运行。我的应用程序的主要HTML正在生成并正确提供,但加载静态文件(CSS,JS,图像,...)不成功。 Chrome告诉我,由于此错误,文件全部不可用:ERR_CONTENT_LENGTH_MISMATCH
。
服务器日志不表示任何内容:
127.0.0.1 - - [02/Sep/2015 10:15:47] "GET /login?next=%2F HTTP/1.1" 302 -
127.0.0.1 - - [02/Sep/2015 10:15:47] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [02/Sep/2015 10:15:47] "GET /static/js/vendor.js HTTP/1.1" 200 -
127.0.0.1 - - [02/Sep/2015 10:15:48] "GET /static/css/app.css HTTP/1.1" 200 -
127.0.0.1 - - [02/Sep/2015 10:15:48] "GET /static/resources/ispot-logo-69x24.png HTTP/1.1" 200 -
正如您所看到的,所有静态文件请求都是在没有错误和HTTP 200 OK
的情况下提供的。
AFAIK,我已经像以前一样设置了开发笔记本电脑。
我对此问题感到非常困惑,因为我找不到任何错误消息或提示在哪里查找问题。有人可以帮忙吗?
答案 0 :(得分:1)
使用curl
查看原始响应的提示是金色的。我的两个浏览器都隐藏了这样一个事实:我已经将Flask配置为使用sendfile机制(使用USE_X_SENDFILE = True
)。只有在针对URL运行详细curl
之后,我才能确定这是导致问题的原因。它在生产环境中工作,因为Apache配置正确,但Flask / Werkzeug Web服务器不支持sendfile功能。
在我的开发机器上设置USE_X_SENDFILE = False
后,它正在运行。我一定忘记将这个配置更改检入到仓库中,这样我才注意到之前的差异。