Java返回Excel文件有時候是空的問題

最近遇到一個奇怪的問題,前端請求後端導出報表到excel,後端根據前端傳的參數查出數據後返回數據到jsp,jsp的響應格式是excel,會直接下載文件,一直以來都用的很好,最近發現有時候會下載下來空的文件,有時候正常。

反覆測試發現一個奇怪的問題
在外網訪問的時候用的QQ瀏覽器,用F12跟蹤發現http請求只發出了一次(POST請求),但是後端會接到兩到三次請求,第一次請求是正常的,第二次請求參數沒了,第三次請求也沒有參數。

點導出時會發出第一次請求,然後瀏覽器彈出下載窗口,點擊下載,會發出第二次,有時候還會發出第三次,如果只發出了第二次,則下載是正常的,如果發出了第三次,則下載下來一個空文件(注:因爲第二、三次沒有參數,查不到數據,所以是個空文件)。

在內網用localhost測試時,用IE測試發現只會發一次請求,一直正常,用QQ瀏覽器,就和外網一樣,應該是瀏覽器的問題。
然後我跟蹤請求發現,一般請求兩次的,第二次是在下載完成後發出的,請求就是正常的。請求三次的,實際上下載的文件是最後一次請求發出後返回的內容。

百思不得其解,最後想到,改成GET請求應該能解決問題,GET請求會一直帶着參數,不管請求幾次,最後都能返回正確的結果。而且這種冪等的請求正常也應該用GET請求,除非參數太長,不得已用POST。
但是QQ瀏覽器在下載時又發出請求真的太奇怪了,改成GET後雖然問題解決了,但是每次導出都發出多次請求,也是加重了服務器的負擔。
這個問題目前找不到解決辦法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章