2015-06-01 3 views
0

Я установил печенье в Scala, подобный следующему:Липкие Печенье в Scala

val cookies:Seq[Cookie] = new Seq() 
val nDaysExpire:Int = 2000 
val nSecondsExpire:Int = nDaysExpire * 24 * 60 * 60 
val cookie:Cookie = new Cookie(sCookieID, sValue, Option(nSecondsExpire)) 
cookies = cookies:+ cookie 
Ok(views.html.main(sID)).withCookies(cookies:_*) 

, а затем я немедленно удалить куки в JavaScript. Я даже удалил cookie через 30 секунд после загрузки страницы.

Когда я перезагружаю страницу, код Scala все еще видит файл cookie. Но в JavaScript cookie не существует, когда я вызываю: document.cookie.

Что происходит?

ответ

1

В соответствии с docs конструктор для Cookie принимает логический параметр с именем httpCookie. Значение по умолчанию: true.

HttpOnly cookie не может быть замечен javascript. Итак, если вы хотите удалить свой файл cookie из javascript, попробуйте установить его на false.

val cookie:Cookie = new Cookie(sCookieID, sValue, Option(nSecondsExpire), httpOnly = false) 

Джефф Atwoord в Protecting Your Cookies: HttpOnly

Пометив печенье с флагом HttpOnly, он сообщает браузер, что именно эти куки должны быть доступны только на сервере. Любая попытка получить доступ к файлу cookie из клиентского скрипта строго запрещена.

+0

СПАСИБО! Мне пришлось немного изменить ваше предложение, поскольку конструктор класса Cookie потребовал 3 дополнительных параметра перед передачей false в качестве параметра httpOnly. Я использовал значения по умолчанию для этих трех дополнительных параметров: new Cookie (sCookieID, sValue, Option (nSecondsExpire), «/», scala.None, false, false) – jaxim

+0

p.s. Хотя, теперь я могу видеть cookie в JavaScript, я не могу удалить cookie в JavaScript. Я отправлю это как еще один вопрос, на который был дан ответ на исходный вопрос. – jaxim