2011-02-17 50 views
12

我在HTTPS(SSL)主機上的JSF Web應用程序中提供文件下載(通常爲CSV或PDF)。它可以在大多數瀏覽器精細,僅IE7/8提供了以下錯誤:IE無法下載foo.jsf。 IE無法打開這個網站。請求的站點不可用或無法找到

Internet Explorer cannot download foo.jsf. Internet Explorer was not able to open this internet site. The requested site is either unavailable or cannot be found. Please try again

我認爲錯誤是有關JSF <h:commandLink>標籤不被兼容IE。

<h:commandLink value="Download" action="#{bean.download}" /> 

這是如何引起的,我該如何解決它?

回答

14

這是一個典型的MSIE錯誤消息,當通過HTTPS(SSL)提供下載時,響應頭設置爲通過no-cache禁用瀏覽器緩存。這個問題與JSF無關。

您需要放鬆對瀏覽器緩存有影響的響應頭。它不應該包含no-cache指令。您可以將其設置爲public,privateno-store

response.setHeader("Cache-Control", "public"); 
response.setHeader("Pragma", "public"); 

另請參閱MS KB Q316431

此外,如果你碰巧在WebSphere Application Server上運行,然後添加頁眉下方,以及爲了防止它以後重寫Cache-Control頭:

response.setHeader("CookiesConfigureNoCache", "false");    

參見IE cannot download files over SSL served by WebSphere

+0

我擔心的是,該文件確實不公開,實際上不應該被緩存。 – 2012-02-24 21:35:05

1

該問題與jsf無關,因爲它只是將commandbutton轉換爲可在所有瀏覽器中訪問的html。我猜這個問題是在abcBean.downloadCSV。你是否正確設置了csv文件的內容類型?

你能描述一下在你的動作方法中發生了什麼嗎?

+0

內容類型很難成爲問題,因爲它在其他瀏覽器中可以正常工作,而MSIE無論如何都會忽略它(它反而會根據請求URL來確定它,是的,令人驚訝......)。 – BalusC 2011-02-17 21:07:42

相關問題