Как сделать cookie доступным для всех путей в домене?

Я создал файл cookie в фильтре Java и добавил обратно в ответ

response.addCookie()

перед возвратом в клиентское приложение node.js. Доступ к этому веб-приложению осуществляется с помощью URL-адреса локального хоста в браузере. Прочитав о проблеме домена cookie при использовании «localhost», я не устанавливал домен или путь в файле cookie при его создании.

Теперь браузеры Chrome или Firefox не отображают файл cookie в браузере. Все мои URL-адреса: http://localhost, но каждая страница имеет свой путь.

Шаг 1: Во время запроса к http://localhost/app/login создается файл cookie и устанавливается в ответ < br> Шаг 2. Когда страница загружается после ответа, файлы cookie не отображаются в Chrome
Шаг 3. Во время следующего запроса http://localhost/app/customer ранее созданный файл cookie не получен при попытке request.getCookies().
Шаг 4: Перед возвратом в клиентское приложение создается файл cookie
Шаг 5: Теперь файл cookie, созданный на шаге 4, отображается в Chrome
Шаг 6: Следующий запрос также отправляется на http://localhost/app/customer , теперь файл cookie, созданный на шаге 4, также принимается на сервер

Если создание файла cookie для локального хоста является проблемой, как это работает только для шагов 4–6?

Как я могу сделать созданный файл cookie доступным для всех путей в домене localhost? Я пытался использовать cookie.addPath("/"), но без изменений.

Примечание. Из-за проблем с правами администратора на моем компьютере для разработки я не могу настроить доменное имя для моего локального IP-адреса в файле etc/hosts.


person yathirigan    schedule 12.05.2015    source источник


Ответы (2)


На вашем Java-сервере вы должны вызвать cookie.setPath("/"), прежде чем добавлять его в ответ.

Такой файл cookie будет соответствовать всем URI запроса. Жаль, что это не поведение по умолчанию.

У меня есть более подробное объяснение пути файла cookie здесь - http://bayou.io/release/0.9/javadoc/bayou/http/Cookie.html#path

person ZhongYu    schedule 12.05.2015
comment
я попытался вызвать .setPath(/) после создания файла cookie и перед добавлением его в ответ, но все же это такое поведение. - person yathirigan; 13.05.2015
comment
что вы имеете в виду, что cookie не отображается в firefox? Вы проверяете Параметры › Показать файлы cookie, и его там нет? тогда у нас есть большая проблема. - person ZhongYu; 13.05.2015
comment
я использую Chrome (из-за какой-то другой проблемы с моим Firefox). Я пытаюсь увидеть файл cookie с помощью инструментов меню Chrome --> Параметры разработчика --> Сеть --> Файлы cookie. - person yathirigan; 13.05.2015
comment
что-то не так с response.setCookie() во время /app/login; может быть, разместить свой код там? - person ZhongYu; 13.05.2015
comment
@yathirigan еще идея - попробуй cookie.setPath("/app") - person ZhongYu; 13.05.2015

Не уверен, что путь является проблемой. Путь не влияет на создание файла cookie; он только определяет, представлено ли оно. Если файлы cookie не отображаются в банке файлов cookie браузера, они отклоняются по какой-либо причине, отличной от пути.

Chrome не будет принимать файлы cookie для локального хоста, поскольку он не принимает файлы cookie в домене верхнего уровня. Домен в URL-адресе должен где-то иметь точку. Таким образом, вы можете либо добавить запись hosts (рекомендуется), либо просто попробовать использовать 127.0.0.1 вместо localhost.

Кроме того, ничего из этого не будет работать, если файл cookie помечен как безопасный или установлен с атрибутом домена. В любом из этих случаев вы ДОЛЖНЫ использовать запись hosts вместо localhost или 127.0.0.1.

person John Wu    schedule 12.05.2015
comment
я добавил точные шаги, чтобы воспроизвести мою проблему. Если использование localhost является проблемой, почему он правильно устанавливает файл cookie для шагов 4-6 (обновлено в вопросе)? сайт som предлагал .app.localhost, но даже это, похоже, не работает. - person yathirigan; 12.05.2015
comment
является ли запись хоста единственным решением при использовании файлов cookie на локальном хосте? - person yathirigan; 13.05.2015
comment
Все ли файлы cookie одинаковы в отношении флага безопасности и атрибута домена? - person John Wu; 13.05.2015
comment
я не устанавливаю явно значение домена и безопасный флаг. - person yathirigan; 13.05.2015