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 了。

 

附上一些過程中找到的參考連結:

 

arrow
arrow

    小攻城師 發表在 痞客邦 留言(0) 人氣()