問題背景:項目開發測試階段出現該問題。
復現:開發調試過程中一直沒有問題,本地下載excel、Word、pdf 都完美,但是在服務部署到服務器之后,測試環境的chrome就總是下載失敗,提示網絡錯誤。
。
這時候追蹤問題,本地測試時發現每次下載都會有問題警示:Resource interpreted as Document but transferred with MIME type application/octet-stream,
各種百度,大多數都是說修改content-type,但是不管修改成什么類型,抓包都顯示返回了相應的類型,但下載就是不成功(不得不吐槽一下百度,真的是打廣告一流)。
轉戰bing,成功找到解決辦法:增加頭信息Content-Length,,其中bytes就是要下載的二進制流文件,
造成這種情況的原因,其實是高版本的chrome對字節流的下載進行了限制,需在頭信息中聲明字節流長度。(這里的限制具體是什么,等后續找到確切說法我再來更新)
2019.08.23 更新:這種方式導出的word有丟失文字現象。在頭部增加的流的長度只是正文的長度(bytes.Length部分),還需要加上頭部的長度,我這里加了5000,也是一點點測出來的。
2019-12-13 更新:這兩天有用戶反映導出Word失敗,,我先用自己電腦的chrome測試--沒問題,向其詢問了他使用的瀏覽器版本--chrome 79 最新版,下載之后嘗試,果然有問題,本地調試也查不到原因,
就想着是不是字節流長度的問題,遂刪除自己加的5000,測試--成功,沒有丟失文字的現象!猜想可能是chrome升級后修復了某些bug,本來字節流長度也不該加上頭信息的長度 呀(個人理解)
僅作為問題記錄
解惑地址:https://blog.csdn.net/qq_34720759/article/details/79189480