Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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
Spring mvc Spring MVC 3.1中POST上缺少集合cookie头_Spring Mvc_Post_Cookies - Fatal编程技术网

Spring mvc Spring MVC 3.1中POST上缺少集合cookie头

Spring mvc Spring MVC 3.1中POST上缺少集合cookie头,spring-mvc,post,cookies,Spring Mvc,Post,Cookies,在$.ajax POST调用期间添加到HttpServletResponse的cookie不会出现在响应头中(没有设置cookie)。在GET请求期间,相同的代码不会正常工作 我在拦截器后句柄中有以下代码: public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndV

在$.ajax POST调用期间添加到HttpServletResponse的cookie不会出现在响应头中(没有设置cookie)。在GET请求期间,相同的代码不会正常工作

我在拦截器后句柄中有以下代码:

public void postHandle(HttpServletRequest request, HttpServletResponse response,
                           Object handler, ModelAndView modelAndView) throws Exception {
.
.
            Cookie cookie = new Cookie(User.USER_KEY, userAsJson);
            LOGGER.info("Cookie json is: " + userAsJson);
            cookie.setPath("/");
            response.addCookie(cookie);
            LOGGER.info("Header names: " + response.getHeaderNames());
            LOGGER.info("Set-cookie header(s): " + response.getHeaders("Set-Cookie"));
}
从请求返回此映射时,我看到了此问题:

@RequestMapping(value = "/api/user/wait", method = RequestMethod.POST)
@ResponseBody
public User waitingApi(HttpSession session) {
Ajax调用参数:

    var ajaxMessage = {
        url : '/api/user/wait',
        type : 'POST',
        success : waitCallback,
        error : waitErrorCallback
    };
在GET上,我在日志中看到以下内容:

Cookie json为:{my valid json object}

标题名称:[设置Cookie]

设置cookie头:[user=“{my valid json object}”;Version=1; 路径=/]

在帖子中,我在日志中看到以下内容:

Cookie json为:{my valid json object}

标题名称:[内容类型、传输编码、日期、服务器]


设置cookie标题:[]在与谷歌共度了很长时间后,我发现了以下帖子:


简而言之,当请求命中具有注释@ResponseBody的操作时,postHandle拦截器不会执行任何操作。您可以通过将响应对象添加到操作参数并在操作内调用addCookie来设置操作方法内的cookie。

postHandle
afterCompletion
方法中,它检查响应是否已提交。这两种情况都太晚了,无法添加cookie。 在
预处理中设置cookie,就可以开始了