Mal*_*are 5 cookies post spring-mvc
在$ .ajax POST调用期间添加到HttpServletResponse的cookie不会出现在响应标头中(没有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"));
}
Run Code Online (Sandbox Code Playgroud)
从请求返回到此映射时,我看到此问题:
@RequestMapping(value = "/api/user/wait", method = RequestMethod.POST)
@ResponseBody
public User waitingApi(HttpSession session) {
Run Code Online (Sandbox Code Playgroud)
Ajax调用参数:
var ajaxMessage = {
url : '/api/user/wait',
type : 'POST',
success : waitCallback,
error : waitErrorCallback
};
Run Code Online (Sandbox Code Playgroud)
在GET上,我在日志中看到以下内容:
Cookie json是:{我有效的json对象}
标头名称:[Set-Cookie]
Set-cookie标头:[user =“ {我的有效json对象}”; 版本= 1;路径= /]
在POST上,我在日志中看到以下内容:
Cookie json是:{我有效的json对象}
标头名称:[内容类型,传输编码,日期,服务器]
设置cookie的标头:[] <---这是空的,未编辑
在谷歌上花了很多时间后,我发现了这篇文章: http://mjremijan.blogspot.ca/2012/06/spring-not-setting-cookie-on-ajax.html
简而言之,当请求命中具有注释 @ResponseBody 的操作时,postHandle 拦截器不会执行任何操作。您可以通过将响应对象添加到操作参数并在操作内调用 addCookie 来在操作方法内设置 cookie。
归档时间: |
|
查看次数: |
2478 次 |
最近记录: |