我需要限制对包含会话令牌的cookie的访问,以便javascript无法访问它.
给出的建议是在cookie上设置Secure和HttpOnly标志.
我在使用@ResponseBody时没有设置cookie,所以我在HandlerInterceptor中设置了cookie.
public class COOKIEFilter implements org.springframework.web.servlet.HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
Cookie cookie = new Cookie("timestamp", new Long(new Date().getTime()).toString());
cookie.setSecure(true);
// how do I set the http-only flag?
httpServletResponse.addCookie(cookie);
return true;
}
如Chrome控制台中所示,设置了Secure,但不设置HTTP
我已经尝试在servlet 3.0 sepcification下向web.xml添加参数,允许在会话cookie上设置安全和http-only,但由于我需要自己处理会话(Spring MVC应用程序需要保持无状态),不适合我.
更新:
我正在使用Tomcat7,目前使用的是Servlet 2.5和Spring 3.2.8.