升级chrome浏览器致使网站登陆功能不能用

2021年11月20日 阅读数:2
这篇文章主要向大家介绍升级chrome浏览器致使网站登陆功能不能用,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

笔者开发一个java web项目,低版本的chrome(74如下)能够正常登陆,升级到chrome74不能正常登陆,登陆成功后url会携带一个jsessionid=xxxxxx。java

登陆成功那个页面有session,能够经过session.getAttribute获取属性值。其余页面就没有session了。web

若是把复制到访问页面后面。例如 http://localhost/111.jsp?jsessionid=xxxxxx也能正常访问。但是tomcat给个人ssession会话凭证的chrome

cookie是JSESSIONID,和jessionid根本就不是一回事。浏览器

在老外网站看到有人讨论,说chrome72,问题相似。没有降到72测试。直接升级到chrome76解决问题了。tomcat

症状图片cookie

升级chrome浏览器致使网站登陆功能不能用_tomcat

 

/toMyProfile.do;jsessionid=DE15789BF54EC8750DB5394BD8A99FA3session

经笔者测试,上述问题消失,偶尔间又恢复。app

最终解决办法:jsp

欺骗浏览器,手工添加JSESSIONIDide

升级chrome浏览器致使网站登陆功能不能用_tomcat_02

 

 

    /**
     * 登陆
     * @param user
     * @param model
     * @return
     */
    @RequestMapping(value = "login.do",method = RequestMethod.POST)
    public String login(User user, Model model, HttpSession session, HttpServletResponse response){
        Map<String,Object> map = loginService.login(user);
        if(map.get("status").equals("yes")){

            Integer uid = (Integer) map.get("uid");
            String headUrl = (String) map.get("headUrl");

            session.setAttribute("uid",uid);
            session.setAttribute("headUrl",headUrl);

            String sessionId = session.getId();
            Cookie cookie = new Cookie("JSESSIONID", sessionId);
            cookie.setMaxAge(Integer.MAX_VALUE);
            response.addCookie(cookie);

            return "redirect:toMyProfile.do";
        }else {
            model.addAttribute("email",user.getEmail());
            model.addAttribute("error",map.get("error"));
            return "login";
        }
    }