我試圖在JSESSIONID cookie上設置httponly標誌。但是,我正在使用Java EE 5,但不能使用setHttpOnly()
。首先,我嘗試使用response.setHeader()
從servlet的doPost()
中創建我自己的JSESSIONID cookie。在JSESSIONID Cookie中設置httponly(Java EE 5)
當這沒有奏效,我試了response.addHeader()
。那也行不通。然後,我瞭解到servlet處理將會話轉換爲JSESSIONID cookie並將其插入到http頭中,因此如果我想使用該cookie,則必須編寫一個過濾器。我寫了一個過濾器,並在那裏玩setHeader()
/addHeader()
,再次無濟於事。
然後,我瞭解到,有一個在響應對象回事它到達過濾器之前,所以如果我要處理的數據,我需要延長HttpServletResponseWrapper
,並傳遞到filterChain.doFilter()
一些沖洗/關閉動作。這樣做,但我仍然沒有得到結果。顯然我做錯了什麼,但我不知道是什麼。
我不確定這是否與手邊的問題完全相關,但是servlet沒有將任何html文檔返回給瀏覽器。真正發生的是一些對象正在被填充並返回給JSP文檔。我曾假設Session對象變成了一個JSESSIONID cookie,並且在發送到瀏覽器之前,將其包裝在一個http頭中,並與對象一起添加到請求中。
我很樂意發佈一些代碼,但我想排除我的困難源自對理論的誤解。
rwise這是一個無法接近的牆文本。可能仍然會考慮發佈您嘗試過的示例代碼。 – 2010-06-07 19:35:01