向服务器发出初始请求,并在响应中添加cookie:
response.addCookie(studyPrefsCookie);
在网页上,在开发人员工具中,我可以看到刚设置的cookie。大。这是一张照片:
我的假设是,现在已经设置了cookie,对我的Web应用程序的每个后续请求(相同的域,相同的servletcontext等)现在将在请求对象可用的cookie中包含此cookie值。但是,似乎在下一个请求中,cookie值不存在,即使通过检查开发人员工具中的请求显示cookie值已发送。在第二个后续请求中,它会正常显示。以下是请求的外观,每次都与浏览器相同:
我甚至从头开始再次测试了这个,然后在第一页加载后再回到服务器进行ajax调用。就浏览器而言,首先ajax调用具有所有正确的cookie,但httpservletrequest对象的cookie没有它。进行另一个相同的ajax调用,现在服务器找到了cookie值。这是预期的行为吗?
我正在服务器端以相同的方式读取cookie,并使用一些辅助方法:
Cookie[] cookies = studyCookieService.getCookiesByName(request.getCookies(), "STUDYPREFS");
if(cookies.length > 0 && studyCookieService.doesCookieContainValue(cookies[0], studyCookieService.getConsentNotCompletedCookieValueWithoutStudyId())){
//redirect
return "redirect:/" + STUDY_CONTROLLER_REQUEST_PATH;
- 服务方法
public Cookie[] getCookiesByName(Cookie[] cookies, String cookieName){
List<Cookie> matchingCookies = new ArrayList<Cookie>();
if (cookies != null) {
for (Cookie ck : cookies) {
if (cookieName.equals(ck.getName())) {
matchingCookies.add(ck);
}
}
}
return matchingCookies.toArray(new Cookie[matchingCookies.size()]);
}