2012-03-22 3 views
0

Когда я перехожу на страницу jsp (A), сначала проверяю, присутствует ли в запросе конкретный атрибут. Если присутствует, я настроил файл cookie соответственно. Поэтому, если пользователь входит в систему в первый раз, в запросе явно не будет атрибута, поэтому cookie не будет установлен.
Но когда пользователь приходит из другого jsp (скажем B), где атрибут был установлен в ответе, cookie будет установлен. После того, как произошла одна такая серия событий, если я перейду на страницу jsp A непосредственно из URL-адреса, все еще установлен новый файл cookie. Как это может произойти. Потому что теперь не должно быть никаких атрибутов, поскольку я перехожу непосредственно на страницу A.
Это мой код.
Что происходит с атрибутом при перезагрузке страницы?

String level=(String) request.getAttribute("level"); 

if(level!=null) 
{ 
    Cookie cookie=new Cookie("level",level); 
    cookie.setMaxAge(60*2); 
    cookie.setPath("/"); 
    response.addCookie(cookie); 

} 

ответ

1

После установки куки на клиенте (браузер), отправив его в ответ, он всегда будет отправлен вместе с каждым запросом на ваш сайт, пока путь определен в куки соответствует URL и печенье не истек, даже если пользователь закрывает браузер, перезапускает его и получает доступ к URL вашего сайта

в вашем примере, вы настраиваете путь к «/» так печенье будет отправлено с каждый URL.

Если вы хотите, чтобы ваши файлы cookie отправлялись только для определенного подмножества URL-адреса, соответствующим образом задайте атрибут пути. Из печенья спецификации на http://curl.haxx.se/rfc/cookie_spec.html:

Атрибут путь используется для указания подмножества URL-адресов в домене , для которых печенье действует. Если файл cookie уже прошел домен , то компонент пути URL-адреса сравнивается с атрибутом пути , и если есть совпадение, cookie считается действительным и отправляется вместе с запросом URL-адреса. Путь «/ foo» будет соответствовать «/ foobar» и «/foo/bar.html». Путь «/» является наиболее общим контуром . Если путь не указан, он считается одним и тем же путем в качестве документа, описываемого заголовком, который содержит файл cookie .

Также обратите внимание, что куки хранятся в файловой системе клиентского компьютера, так что сохраняется через браузер перезагружается - он будет отправлен вместе с запросом, даже если браузер будет перезапущен и ваш URL доступен, пока печенье не истек и применяются другие правила безопасности

+0

Спасибо, что ответили. Но я не думаю, что вы правильно прочитали мой вопрос. Мой quetion - это то, почему каждый cookie-файл устанавливается в моем сценарии. – Ashwin

+0

Что вы подразумеваете под «новым печеньем»? вы теряете ценность файла cookie с несколькими запросами? вы можете проверить локальные файлы cookie в своем браузере, чтобы убедиться, что cookie в настоящее время установлен. Если вы можете предоставить более подробную информацию о параметре cookie, который вы устанавливаете, то, что хранится в браузере, и что передается с запросом (вы можете проверить вкладку «Сеть» в firebug, чтобы просмотреть файлы cookie, передаваемые на сервер), которые будут полезно при диагностике –

+0

С помощью нового файла cookie я имею в виду, что время истечения срока действия cookie увеличивается каждый раз, когда я обновляю страницу. – Ashwin

Смежные вопросы