Cookie автоматически становится httpOnly - PullRequest
0 голосов
/ 04 июля 2019

У меня есть веб-приложение, развернутое в WebSphere в корне контекста /app.Внутри приложения есть javascript, который выполняется сразу после загрузки, и выглядит примерно так:

document.cookie = "foo=bar; path=/app";

setTimeout(function () {
    document.cookie = "baz=qux; path=/app";
}, 1000);

Поведение Chrome

Из DevTools я вижу, что изначально foo=bar созданокак non -httpOnly и через 1-2 секунды он автоматически становится httpOnly.После ожидания в течение примерно 5 секунд (просто чтобы убедиться) также создается второй файл cookie, но в режиме, отличном от httpOnly, конечный результат выглядит следующим образом:

foo=bar (httpOnly=true)
baz=qux (httpOnly=false)

Q1: почемуfoo = bar становится httpOnly через некоторое время?

Q2: Почему это задержанное создание файлов cookie имеет такую ​​разницу?

Я могу сказать, что порог равенгде-то 700-800 мс, если я задерживаю создание куки с меньшим, чем это значение, оно ведет себя точно так же, как и вообще без задержки.

Поведение Firefox

Здесь в случае задержки ниже порога (илибез какого-либо setTimeout) он создает 2 куки-файла на кей, пару значений, например:

foo=bar; path=/app  (httpOnly=false)
foo=bar; path=/app/ (httpOnly=true)
baz=qux; path=/app  (httpOnly=false)
baz=qux; path=/app/ (httpOnly=true)

, в то время как в случае задержки выше порогового значения он не создает дублирующийся куки-файл (для baz = qux):

foo=bar; path=/app  (httpOnly=false)
foo=bar; path=/app/ (httpOnly=true)
baz=qux; path=/app  (httpOnly=false)

В3: Не говоря уже о том, почему FF добавляет косую черту в конце (я слышал, что разные браузеры по-разному обрабатывают файлы cookie), почему это не относится к отложенному созданию файлов cookie?

Я даже подумал, что может бытьГде-то в приложении есть сценарий, который через некоторое время «перезаписывает» не только HTTP-файлы cookie на httpOnly, но я не думаю, что это так, потому что выполнение этого из консоли ничего не меняет:

document.cookie="baz=qux; path=/app; HttpOnly"

т.е. baz = qux остается не только httpOnly.Некоторые даже утверждают, что это невозможно

Это не то, что сервер сбрасывает куки в httpOnly через ответы, я проверял каждый запрос в представлении сети, и эти куки не приходятс сервера.

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

Есть идеи?К сожалению, я не могу поделиться реальным кодом.Если кто-то сможет хотя бы теоретически объяснить, в чем может быть причина, это будет очень полезно.

Другие примечания:

  • Это не относится к файлам cookieсоздан с путем = /
  • Chrome версия: 75.0.3770.100
  • Версия Firefox: 67.0.4
  • Я использую окно инкогнито без каких-либо расширений
...