Safari 11 X-XSRF-TOKEN не обновляется после обновления

Недавно Safari 11 был выпущен для Mac OSX. Это обновление вызывает проблемы с нашим веб-приложением в сочетании с XSRF в заголовке нашего запроса. Постараюсь логически описать проблему. Вот как будет выглядеть хорошая ситуация:

  1. Когда пользователь хочет войти в систему, он получает ответ от сервера с Set-Cookie, который содержит значение токена XSRF. Eg: Set-Cookie: XSRF-TOKEN=LKNBX4DZhL708KjXNkgXnlxTDCNuhsZG1kTc2SFy498; Path=/; Secure

  2. Страница обновляется. Следующий вызов, который будет выполнен, содержит правильное значение XSRF в заголовке. На стороне сервера значение проверяется и т. д. Каждый вызов с внешнего интерфейса будет содержать этот токен XSRF.

  3. Если пользователь выходит из системы и хочет войти снова, его файл cookie XSRF будет переопределен новым значением, и он сможет войти в систему с этим токеном.

Наша проблемная ситуация (с Safari 11 на Mac OSX, другие браузеры не показывают такого поведения):

  1. Если файлы cookie отсутствуют, пользователь может войти в систему в обычном режиме.

  2. Однако, если он хочет снова войти в систему (после предыдущего сеанса), происходит обновление. При первом вызове других обновлений XSRF-токен при его вызове не заменяется новым значением, они по-прежнему содержат старый XSRF-токен из предыдущего сеанса. Когда мы проверяем этот запрос, мы видим, что файлы cookie по этому запросу содержат правильное значение, но заголовок отражает старый токен.

  3. Этот вызов с неправильным заголовком вызывает закрытие сеанса в бэкэнде, и поэтому пользователь вылетает из своего сеанса. TLDR; в Safari 11 заголовок XSRF-TOKEN не обновляется в соответствии со значением файла cookie после обновления. У нас это работает в старых версиях и в других браузерах, что, по нашему мнению, является ошибкой Safar 11.

Кто-нибудь еще испытывает подобную проблему? Где значение заголовка запроса не обновляется после обновления страницы в Safari 11?

РЕДАКТИРОВАТЬ: после тестирования мы обнаружили, что размещение временной метки в URL-адресе в качестве параметра запроса заставляет Safari 11 отправлять правильный запрос. Похоже, что некоторые запросы кэшируются, а обновленные заголовки игнорируются..

Большое спасибо!


person Flex    schedule 02.10.2017    source источник


Ответы (1)


Я не могу комментировать вашу проблему с токеном, но у меня также есть подозрение, что в Safari 11 есть проблема с кэшированием. В последнее время даже для запросов JSON, которые указывают

Cache-Control: no-cache, private

Safari начинает кэшировать эти запросы (обозначенные как Cache (Disk)) после двух перезагрузок страницы с локального хоста. Ни firefox, ни chrome этого не делают. Похоже на ошибку для меня?

person andig    schedule 25.10.2017
comment
Это действительно очень похоже на мою проблему. Заметили это только в сафари 11 (предыдущие версии и другие браузеры нормально). Мы также указали управление кешем, но не повлияли на поведение. Как я уже сказал, мы добавили новый параметр запроса (дата, чтобы сделать запрос уникальным). Надеюсь, это также может помочь вам. - person Flex; 27.10.2017