gpt4 book ai didi

spring-mvc - Spring MVC 3.1 中 POST 上缺少 set-cookie header

转载 作者:行者123 更新时间:2023-12-04 02:15:56 25 4
gpt4 key购买 nike

在 $.ajax POST 调用期间添加到 HttpServletResponse 的 Cookie 不会出现在响应 header 中(没有 set-cookie)。相同的代码在 GET 请求期间确实正常工作。

我在拦截器 postHandle 中有以下代码:

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 is: { my valid json object }

Header names: [Set-Cookie]

Set-cookie header(s): [user="{ my valid json object }"; Version=1; Path=/]



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

Cookie json is: { my valid json object }

Header names: [Content-Type, Transfer-Encoding, Date, Server]

Set-cookie header(s): [] <--- this is empty, not redacted

最佳答案

在谷歌上花了很多时间后,我找到了这篇文章:
http://mjremijan.blogspot.ca/2012/06/spring-not-setting-cookie-on-ajax.html

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

关于spring-mvc - Spring MVC 3.1 中 POST 上缺少 set-cookie header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22517465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com