最近项目发现了一个问题,每次刷新界面,都会提示:
然后点击确定,界面都会出现412
再次点击刷新,界面又恢复了,之后再刷新,问题又出现了,再刷新,界面又恢复了,然后得出:
问题只在chrome出现,其他浏览器IE什么的没有发现,打开chrome的开发者模式,这个问题也不会出现;
之后,开始看代码,
注释掉所有的js,发现问题依旧出现。。。
最后定位在java代码,
之前大概是/login post请求直接返回string,通过springmvc的viewResolver直接解析,返回到html,导致每次刷新主页,js会重新请求/login post导致412
@RequestMapping(value = "/login", method =RequestMethod.POST)publicString doLoginHandler(RedirectAttributes attributes, HttpSession session, HttpServletRequest req, HttpServletResponse resp)
{
String toAddress= returnLoginmsg(session, req, resp, "0", userName, password, "0");returntoAddress;
}
修改为
@RequestMapping(value = "/login", method =RequestMethod.POST)publicString doLoginHandler(RedirectAttributes attributes, HttpSession session, HttpServletRequest req, HttpServletResponse resp)
{
String toAddress= returnLoginmsg(session, req, resp, "0", userName, password, "0");
attributes.addAttribute("toAddress", toAddress);return "redirect:index";
}
@RequestMapping(value={"/index"}, method={RequestMethod.GET})publicString doIndex(HttpServletRequest req) {return req.getParameter("toAddress");
}
登陆成功后跳转到/index get请求,再次刷新会直接调取get请求,而不会再次请求/login post。