默认情况下,Glassfish v3不会在会话cookie上设置httpOnly标志(与request.getSession()
照常创建时一样)。
我知道,有一种方法javax.servlet.SessionCookieConfig.setHttpOnly()
,但我不确定,如果这是最好的方法,如果是的话,最好的地方就是放置那条线。
BTW,当然不能在servlet本身完成(例如在init()中):
java.lang.IllegalStateException: PWC1426:
Unable to configure httpOnly session tracking cookie property for
servlet context /..., because this servlet context has already been initialized
通常,我更喜欢使用配置选项,例如在web.xml中。
答案 0 :(得分:22)
这是通过Servlet 3.0 web.xml
支持的(参见web-common_3_0.xsd
):
<web-app>
<session-config>
<cookie-config>
<!--
Specifies whether any session tracking cookies created
by this web application will be marked as HttpOnly
-->
<http-only>true</http-only>
</cookie-config>
</session-config>
</web-app>
答案 1 :(得分:2)
您还可以添加<secure>true</secure>
以提高安全性。
<session-config>
<cookie-config>
<http-only>true</http-only>
<secure>true</secure>
</cookie-config>
</session-config>