Safari 11 X-XSRF-TOKEN не обновляется после обновления
Недавно 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-токен из предыдущего сеанса. Когда мы проверяем этот запрос, мы видим, что куки-файлы по этому запросу содержат правильное значение, но заголовок отражает старый токен.
Этот вызов с неправильным заголовком вызывает закрытие сеанса в бэкэнде, и поэтому пользователь исключается из своего сеанса. 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 не делают некоторые. Похоже, ошибка для меня?