我想在登录时在我的响应中设置 cookie,以及此后每次请求时读取的内容。 为此,我在登录时添加了这样的 cookie:
Cookie cookieClientId = new Cookie("id", token.getTkn());
cookieClientId.setMaxAge(24*60*60);
response.addCookie(cookieClientId);
当请求到来时,我检查 cookie 是否存在,如下所示:
cookies = ((HttpServletRequest) request).getCookies();
cookieId = null;
if (cookies != null) {
for (Cookie ck : cookies) {
System.out.println("ck--------------- "+ck.getName());
if (ck.getName().toString().equals("id")) {
System.out.println("id cookie equal");
cookieId = ck.getValue();
System.out.println("cookie id " + cookieId);
System.out.println(cookieId.equals(authToken));
if (cookieId.equals(authToken)) {
isSecretAndKeyValid = true;
}
};
}
但我面临的问题是我仅在登录请求后的第一个请求中获取 cookie。之后,在每个请求中,我不会对任何具有该名称“id”的 cookie 进行罚款,该名称是我在登录请求时设置的。
我尝试搜索cookie添加、检索方法,我几乎在所有地方都找到了这个。
最佳答案
默认情况下,当您向浏览器发送 cookie 时,浏览器会将 cookie 返回到发送 cookie 的目录以及该目录的所有子目录中的所有 servlet 和 JSP。要使cookie对整个应用程序可用,可以将路径设置为“/”。 (引自 Murach 的 Servlet 和 JSP,第二版)
Cookie cookieClientId = new Cookie("id", token.getTkn());
cookieClientId.setMaxAge(24*60*60);
cookieClientId.setPath("/");
response.addCookie(cookieClientId);
关于java - 添加和读取cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30137363/