首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

IE 瀏覽器上傳 Excel 偶發 403 錯誤:MIME 類型被識別為 application/octet-stream 被過濾器攔截

     編輯:程式設計綜合問答

問題現象

IE 6-10 上傳 Excel 文件偶爾返回 403,請求未達到服務器。另存為後上傳則正常。其他瀏覽器無此問題。

根因定位

IE 偶爾將 .xls/.xlsx 識別為 application/octet-stream (二進制流) 而非標準 MIME:

  • .xls → application/vnd.ms-excel
  • .xlsx → application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

項目中的 Filter/攔截器按 MIME 類型白名單校驗,octet-stream 不在白名單中,被攔截返回 403。

解決方案

  1. 擴展白名單:在 Filter 中添加 application/octet-stream 允許通過(需配合文件擴展名二次校驗)。
  2. 服務端 MIME 映射:在 web.xml 或 Tomcat conf/web.xml 確保擴展名正確映射:
<mime-mapping>
  <extension>xls</extension>
  <mime-type>application/vnd.ms-excel</mime-type>
</mime-mapping>
<mime-mapping>
  <extension>xlsx</extension>
  <mime-type>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</mime-type>
</mime-mapping>
  • 前端強制類型:表單添加 accept=".xls,.xlsx",但 IE 仍可能忽略。
  • 深度疑問

    IE 判斷文件類型機制較老舊,主要依賴註冊表 HKEY_CLASSES_ROOT\.xls\Content Type,系統安裝 Office 版本、補丁均可能影響。若 Tomcat 已配置 mime-mapping 仍無效,說明請求在進入 Servlet 容器前已被前置 Filter/代理攔截。

    1. 上一篇文章:
    2. 下一篇文章:
    Copyright © 程式碼之家 All Rights Reserved