HttpServletRequest.getCookies(): Array, почему функция isHttpOnly() всегда возвращает false?
Привет, я пытаюсь получить файлы cookie httponly. Это код, который я написал
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
Cookie cookie = new Cookie("mycookie", "hi");
resp.addCookie(cookie);
cookie.setHttpOnly(true);
boolean bol = cookie.isHttpOnly();
out.println("<br>Cookie is Marked as HttpOnly = " + bol);
Cookie[] cookies = req.getCookies();
if (cookies != null) {
for (int i = 0; i < cookies.length; i++) {
out.println("<br/> From Cookies Array Name is: "
+ cookies[i].getName());
out.println("<br/> From Cookies Array Value is: "
+ cookies[i].getValue());
out.println("<br/> From Cookies Array isHttpOnly: "
+ cookies[i].isHttpOnly());
}
}
out.println("<br/> <br/>");
cookie.setHttpOnly(false);
boolean bol1 = cookie.isHttpOnly();
out.println("<br>Cookie is Marked as HttpOnly = " + bol1);
Cookie[] cookies1 = req.getCookies();
if (cookies1 != null) {
for (int i = 0; i < cookies1.length; i++) {
out.println("<br/> From Cookies Array Name is: "
+ cookies[i].getName());
out.println("<br/> From Cookies Array Value is: "
+ cookies[i].getValue());
out.println("<br/> From Cookies Array isHttpOnly: "
+ cookies[i].isHttpOnly());
}
}
out.close();
}
Печать
Cookie is Marked as HttpOnly = true
From Cookies Array Name is: mycookie
From Cookies Array Value is: hi
From Cookies Array isHttpOnly: false
Cookie is Marked as HttpOnly = false
From Cookies Array Name is: mycookie
From Cookies Array Value is: hi
From Cookies Array isHttpOnly: false
Обратите внимание, что я использую JBoss 7, и в конфигурации web.xml я добавил, но я думаю, что-то не хватает
<session-config>
<cookie-config>
<http-only>true</http-only>
</cookie-config>
</session-config>
1 ответ
Браузер не отправляет информацию cookie, отличную от значения, например httponly, secure, maxage, path и т. Д. Назад. Браузер отправляет только значение cookie, связанное с именем cookie.
Вы можете убедиться в этом сами, отслеживая HTTP-трафик в наборе инструментов разработчика своего веб-браузера. Нажмите F12 в Chrome/Firebug/IE9 и откройте вкладку "Сеть" или "Сеть", а затем изучите заголовки запроса и ответа. Вы увидите, что только Set-Cookie
Заголовок ответа содержит рядом с именем = значение дополнительные параметры cookie и что Cookie
Заголовок запроса содержит только имя = значение.
Не волнуйтесь, дополнительные параметры cookie запоминаются в браузере. Если вы не уверены, вы всегда можете переопределить его, создав новый файл cookie с тем же именем и путем.