我试图在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