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-токен из предыдущего сеанса. Когда мы проверяем этот запрос, мы видим, что куки-файлы по этому запросу содержат правильное значение, но заголовок отражает старый токен.

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

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

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

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

1 ответ

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

Cache-Control: no-cache, private

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

Другие вопросы по тегам