【问题标题】:Servlet cookies work on postman windows app, but not in chrome nor the postman chrome extensionServlet cookie 适用于邮递员 windows 应用程序,但不适用于 chrome 或邮递员 chrome 扩展
【发布时间】:2020-02-29 21:34:57
【问题描述】:

所以我正在使用 Angular、Java servlet 和 postgresql 尝试构建一个小的登录系统。我想使用cookie来存储用户名和用户密码。

        String username = request.getParameter("name");
        String password = request.getParameter("password");

        if(LoginInfoDAO.verifyuser(username, password)){
        String.valueOf(UserDAO.getUserByUsername(username).getUser_id()));
            Cookie c1 = new Cookie("userid",String.valueOf(UserDAO.getUserByUsername(username).getUser_id()));
            c1.setMaxAge(20);
            c1.setPath("/");
            c1.setDomain("localhost");
            response.addCookie(c1);
            PrintWriter out = response.getWriter();
            out.print(UserService.getUserJson(username));
        }
        else {
            response.setStatus(404);
        }

我能够添加 cookie 并在 windows postman 应用程序上的另一个 servlet 上检索存储的数据,但不能在 chrome 或 postman chrome 扩展中。

    Cookie c[] = request.getCookies();
    int userid = Integer.parseInt(c[1].getValue());
    out.print(om.writeValueAsString(ReimbService.getTicketsByUserid(userid)));

请帮忙,这太奇怪了

【问题讨论】:

    标签: angular servlets cookies postman


    【解决方案1】:

    我终于解决了这个问题。感谢您的这篇文章:https://stackoverflow.com/a/46412839/8735121

    解决问题(跨域发送cookie,需要添加

    response.addHeader("Access-Control-Allow-Credentials", "true");
    

    到你的servlet,并添加

    {withCredentials: true}
    

    到你的前端调用,像这样:

     this.httpClient.post<User>(url,params,{withCredentials: true})
        .subscribe((val)=>{//do something with the response}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-09
      • 2018-08-01
      • 2020-11-20
      • 2019-01-20
      • 1970-01-01
      • 2023-03-30
      • 2019-08-25
      • 2021-10-06
      相关资源
      最近更新 更多