问题背景:项目开发测试阶段出现该问题。
复现:开发调试过程中一直没有问题,本地下载excel、Word、pdf 都完美,但是在服务部署到服务器之后,测试环境的chrome就总是下载失败,提示网络错误。
。
这时候追踪问题,本地测试时发现每次下载都会有问题警示:Resource interpreted as Document but transferred with MIME type application/octet-stream,
各种百度,大多数都是说修改content-type,但是不管修改成什么类型,抓包都显示返回了相应的类型,但下载就是不成功(不得不吐槽一下百度,真的是打广告一流)。
转战bing,成功找到解决办法:增加头信息Content-Length,
,其中bytes就是要下载的二进制流文件,
造成这种情况的原因,其实是高版本的chrome对字节流的下载进行了限制,需在头信息中声明字节流长度。(这里的限制具体是什么,等后续找到确切说法我再来更新)
这种方式导出的word有丢失文字现象。在头部增加的流的长度只是正文的长度(bytes.Length部分),还需要加上头部的长度,我这里加了5000,也是一点点测出来的。