close
網站從測試環境送上 production 之後,我在 IE9 可以下載檔案,但使用者反映他使用 IE8 無法正確下載。
錯誤訊息為:
「Internet Explorer 無法下載 xxx.php 從 xxx.xxx.xxx.tw。
Internet Explorer 無法開啟這個網際網路網站。可能是因為要求的網站無法使用或找不到。請稍後再試。」
請幾位遇到這個問題的 IE8 使用者協助確認後,發現他們的 IE 設定沒有異常(「網際網路選項→進階→安全性」裡的「不要將加密的網頁存到磁碟」都沒有勾選)。
比較了正式環境與測試環境,最大的差異就是有 SSL,而 IE9 可以 work,因此猜想可能是 server 端的問題。一開始找到《tomcat ssl ie下载文件失败的解决》,不過按照這篇把禁止快取 (no-cache) 拿掉,沒用。
後來找到這個討論串:"Re: [PHP] IE can't download, FF can: SSL ? Need special headers?",試著跟著調整了一下部分 header:
<?php
// (略)
// 增加以下兩行 header
header('Content-Description: File Transfer');
header('Pragma: public'); // 這行看來是真正的重點
// 下列兩行是註解掉的原有內容
// header('Expires: 0');
// header('Last-Modified: ' . gmdate('D, d M Y H:i ') . ' GMT');
// (略)
?>
其他部分原有的內容保持不動,這樣就可以 work 了。
附上一些過程中找到的參考連結:
- Microsoft 技術支援:防止快取時透過 SSL 下載主動式文件(機器翻譯)
- [ PHP ] IE6、7、8 透過SSL無法下載PDF 檔案
- IE 无法下载和IE无法读源文件
文章標籤
全站熱搜
留言列表