我有一個Flask應用程序,它將在Apache的生產環境下運行。我有一些靜態文件,但它們需要經過身份驗證的訪問。因此,使用X-SENDFILE似乎合理的身份驗證後,以加快文件傳遞:使用X-Sendfile的Flask開發服務器
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,或者我在開發過程中被迫關閉它?
謝謝你的提示。我從Flask的站點獲得'SharedDataMiddleware'的東西。 – jpmc26