Недавно Safari 11 был выпущен для Mac OSX. Это обновление вызывает проблемы с нашим веб-приложением в сочетании с XSRF в заголовке нашего запроса. Постараюсь логически описать проблему. Вот как будет выглядеть хорошая ситуация:
Когда пользователь хочет войти в систему, он получает ответ от сервера с Set-Cookie, который содержит значение токена XSRF.
Eg: Set-Cookie: XSRF-TOKEN=LKNBX4DZhL708KjXNkgXnlxTDCNuhsZG1kTc2SFy498; Path=/; Secure
Страница обновляется. Следующий вызов, который будет выполнен, содержит правильное значение XSRF в заголовке. На стороне сервера значение проверяется и т. д. Каждый вызов с внешнего интерфейса будет содержать этот токен XSRF.
Если пользователь выходит из системы и хочет войти снова, его файл cookie XSRF будет переопределен новым значением, и он сможет войти в систему с этим токеном.
Наша проблемная ситуация (с Safari 11 на Mac OSX, другие браузеры не показывают такого поведения):
Если файлы cookie отсутствуют, пользователь может войти в систему в обычном режиме.
Однако, если он хочет снова войти в систему (после предыдущего сеанса), происходит обновление. При первом вызове других обновлений XSRF-токен при его вызове не заменяется новым значением, они по-прежнему содержат старый XSRF-токен из предыдущего сеанса. Когда мы проверяем этот запрос, мы видим, что файлы cookie по этому запросу содержат правильное значение, но заголовок отражает старый токен.
Этот вызов с неправильным заголовком вызывает закрытие сеанса в бэкэнде, и поэтому пользователь вылетает из своего сеанса. TLDR; в Safari 11 заголовок XSRF-TOKEN не обновляется в соответствии со значением файла cookie после обновления. У нас это работает в старых версиях и в других браузерах, что, по нашему мнению, является ошибкой Safar 11.
Кто-нибудь еще испытывает подобную проблему? Где значение заголовка запроса не обновляется после обновления страницы в Safari 11?
РЕДАКТИРОВАТЬ: после тестирования мы обнаружили, что размещение временной метки в URL-адресе в качестве параметра запроса заставляет Safari 11 отправлять правильный запрос. Похоже, что некоторые запросы кэшируются, а обновленные заголовки игнорируются..
Большое спасибо!