Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 仅在Spring MVC控制器中创建的Cookie上设置http_Java_Spring_Spring Mvc_Cookies - Fatal编程技术网

Java 仅在Spring MVC控制器中创建的Cookie上设置http

Java 仅在Spring MVC控制器中创建的Cookie上设置http,java,spring,spring-mvc,cookies,Java,Spring,Spring Mvc,Cookies,我需要限制对包含会话令牌的cookie的访问,以便javascript无法访问它。 给出的建议是在cookie上设置Secure和HttpOnly标志 我在使用@ResponseBody时遇到了cookies未设置的问题,因此我将cookies设置在HandlerInterceptor中 public class COOKIEFilter implements org.springframework.web.servlet.HandlerInterceptor { @Override

我需要限制对包含会话令牌的cookie的访问,以便javascript无法访问它。 给出的建议是在cookie上设置Secure和HttpOnly标志

我在使用@ResponseBody时遇到了cookies未设置的问题,因此我将cookies设置在HandlerInterceptor中

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控制台所示,设置了安全,但没有设置HTTP

我曾尝试在servlet 3.0 sespecification下向web.xml添加参数,该参数只允许在会话cookie上设置安全和http,但由于我需要自己处理会话(Spring MVC应用程序需要保持无状态),这对我不起作用

更新:


我正在使用Tomcat7,目前使用Servlet 2.5和Spring 3.2.8。

它可以设置为
cookie.setHttpOnly(true)
,就像您为安全所做的那样。

替换:

 Cookie cookie = new Cookie("timestamp", new Long(new Date().getTime()).toString());
有以下几点

Cookie cookie = new Cookie("timestamp", new Long(new Date().getTime()).toString()+";HttpOnly");

这可能会起作用。

您需要设置
HttpOnly
,如下所示:

Cookie cookie = new Cookie("timestamp", new Long(new Date().getTime()).toString() + ";HttpOnly");

它需要遵循
cookieName=cookieValue;HttpOnly;安全
format

仅将值设置为“1427955447675 Http Only”(仅限Http)是的,我没有将。正如你所说的那样,这也行不通。我可以知道你用的是哪台服务器吗。因为,某些服务器级配置可能会导致冲突我在Chrome控制台中看到的值现在是
“1427955789419
,但没有设置HTTP标志。您的意思是说,在上述更改之后,您仍然没有看到
HttpOnly
?让我尝试将servlet规范提升到3i。我没有使用Sping MVC框架,但这在Java servlet中起作用。是您从
javax.servlet.http.Cookie
使用的
Cookie
?正确:javax.servlet.http.Cookie;setHttpOnly支持哪个servlet版本?JavaEE6说
,因为:Servlet3.0
,让我来看看如何让Spring更好地使用Servlet3.0。