添加和读取 cookie
Adding And Reading cookies
我想在登录时在我的响应中设置 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的方法,我几乎在每个地方都找到了这个。
对于每个 http 请求,cookie 都是独立的,你必须在客户端存储 cookie 数据,然后在每个请求中,你可以这样设置 cookie:
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
for (HttpCookie cookie : cookieManager.getCookieStore().getCookies()) {
cookieString += cookie.toString();
}
connection.setRequestProperty("Cookie",cookieString);
默认情况下,当您向浏览器发送 cookie 时,浏览器会将 cookie return 发送给发送 cookie 的目录和该目录的所有子目录中的所有 servlet 和 JSPs .要使 cookie 对整个应用程序可用,可以将路径设置为“/”。 (引自 Murach 的 Servlets 和 JSP,第 2 版)
Cookie cookieClientId = new Cookie("id", token.getTkn());
cookieClientId.setMaxAge(24*60*60);
cookieClientId.setPath("/");
response.addCookie(cookieClientId);
我想在登录时在我的响应中设置 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的方法,我几乎在每个地方都找到了这个。
对于每个 http 请求,cookie 都是独立的,你必须在客户端存储 cookie 数据,然后在每个请求中,你可以这样设置 cookie:
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
for (HttpCookie cookie : cookieManager.getCookieStore().getCookies()) {
cookieString += cookie.toString();
}
connection.setRequestProperty("Cookie",cookieString);
默认情况下,当您向浏览器发送 cookie 时,浏览器会将 cookie return 发送给发送 cookie 的目录和该目录的所有子目录中的所有 servlet 和 JSPs .要使 cookie 对整个应用程序可用,可以将路径设置为“/”。 (引自 Murach 的 Servlets 和 JSP,第 2 版)
Cookie cookieClientId = new Cookie("id", token.getTkn());
cookieClientId.setMaxAge(24*60*60);
cookieClientId.setPath("/");
response.addCookie(cookieClientId);