V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
coolair
V2EX  ›  问与答

碰到一个 Flask 部署后的奇葩问题,求解决办法。

  •  
  •   coolair · 2017-07-21 21:35:08 +08:00 · 954 次点击
    这是一个创建于 2685 天前的主题,其中的信息可能已经有所发展或是发生改变。
    部署用的 Gunicorn 18.0 和 eventlet 0.20.1。
    问题来了:
    如果用 eventlet,则在 Chrome 浏览器里直接打开的 make_response 生成的 PDF 文件预览没问题,下载只能下载部分数据,不能下载整个完整的 PDF。
    Chrome 在加载完整个 PDF 预览后,点击下载按钮,不是直接从缓存下载的 PDF 么,为什么预览没有问题,下载却下载不完整呢?在 Edge 和 Firefox 中测试都可以完整下载。

    但是,如果不使用 eventlet,Chrome 也是可以完整下载的。

    这到底是为啥?查看了 Nginx 的 access 日志,Chrome 点击 pdf 上的下载按钮,并没有再访问服务器啊。
    2 条回复    2017-07-24 06:48:42 +08:00
    sivacohan
        1
    sivacohan  
       2017-07-23 07:05:11 +08:00 via Android
    Wireshark 抓下包吧,看一下 chrome 在浏览和下载 PDF 的时候所发请求 header 部分有什么不同。再和 Firefox 的 header 比较一下。
    我猜问题出在 PDF.js 和 server 端 chuck encoding 这块了
    julyclyde
        2
    julyclyde  
       2017-07-24 06:48:42 +08:00
    chrome 不是从缓存下载的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2921 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:52 · PVG 22:52 · LAX 06:52 · JFK 09:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.