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 с тем же именем и путем.

Смотрите также:

Другие вопросы по тегам