簡體   English   中英

使用java servlet api刪除http標頭

[英]Remove http header using java servlet api

我們使用的是IBM Websphere Application Server 6.1,瀏覽器是Internet Explorer 8。

我們有一個java servlet,它可以動態生成PDF和MS Word文檔。 在第一次嘗試時,一些用戶說他們正在獲得

“Internet Explorer無法打開此站點。請求的站點不可用或無法找到。請稍后再試。”

根據Microsoft支持文章ID 323308
當您嘗試通過HTTPS(SSL)IE打開Microsoft Office文檔或PDF文檔時,IE失敗並顯示以上錯誤消息。 如果服務器發送“Cache-control:no-store”標頭或發送“Cache-control:no-cache”標頭,則會出現此問題。 對於IE8,Microsoft建議在用戶Windows XP桌面上添加注冊表項。 這對我們來說不太實際,因為我們無法控制用戶的桌面。 這不會發生在IE9,Firefox,Chrome等上。

根據PK20531 ,當響應中設置了cookie時,WAS 6.1正在添加Cache-Control:no-cache =“set-cookie,set-cookie2”和Expires HTTP標頭。

注 - 我們沒有在servlet中設置cookie。 Cookie由單點登錄軟件設置。

在第一次嘗試設置單點登錄(LTPA)cookie並且WAS正在添加IE瀏覽器不喜歡的HTTP標頭時。

Java servlet api是否提供了刪除http標頭的方法? 是否有使用Filter api刪除http標頭的技術?

如果從響應中刪除Cache-Control標頭,那么您不會發送有關緩存的任何指令,因此緩存行為將是不可預測的。

最好將標頭設置為其他內容,而不是刪除 據推測,您希望在瀏覽器上為您的頁面啟用緩存。 因此,您可以將這些行添加到servlet中以在瀏覽器中啟用緩存:

response.setHeader("Pragma", "cache");
response.setHeader("Cache-Control", "private, must-revalidate");

您也可以在Filter執行此操作,因為過濾器可以訪問HTTP響應對象。 但是如果你已經編寫了自己的servlet,那么在servlet中執行它可能會更有效 - 也更清晰。

這一切都是你可以控制的。 如果你不把它放在那里,就沒有什么可以刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM