我正在尝试在 JSESSIONID cookie 上设置 httponly 标志。但是,我正在使用 Java EE 5,无法使用setHttpOnly()
. 首先,我尝试doPost()
使用response.setHeader()
.
当那不起作用时,我尝试了response.addHeader()
. 那也没有用。然后,我了解到 servlet 处理将会话转换为 JSESSIONID cookie 并将其插入到 http 标头中,因此如果我想使用该 cookie,我将不得不编写一个过滤器。我写了一个过滤器并在那里玩setHeader()
/ addHeader()
,再次无济于事。
然后,我了解到响应对象在到达过滤器之前会执行一些刷新/关闭操作,所以如果我想操作数据,我需要扩展HttpServletResponseWrapper
并将其传递给filterChain.doFilter()
. 这已经完成,但我仍然没有得到结果。显然我做错了什么,但我不知道是什么。
我不确定这是否与手头的问题完全相关,但是 servlet 没有将 html 文档返回给浏览器。真正发生的只是一些对象被填充并返回到 JSP 文档。我有点假设 Session 对象被转换为 JSESSIONID cookie 并在发送到浏览器之前将其与添加到请求中的对象一起包装在 http 标头中。
我很乐意发布一些代码,但我想排除我的困难首先源于对理论的误解的可能性。