HttpOnly Session Cookie + сервлет 3.0 (например Glassfish v3)
По умолчанию Glassfish v3 не устанавливает флаг httpOnly для сеансовых файлов cookie (при обычном создании с помощью request.getSession()
).
Я знаю, что есть метод javax.servlet.SessionCookieConfig.setHttpOnly()
, но я не уверен, что это лучший способ сделать это, и если да, то где лучше всего поставить эту линию.
Кстати, конечно, это не может быть сделано в самом сервлете (например, в 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.
2 ответа:
Это поддерживается через сервлет 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>