С момента выхода Chrome 63 на Android, 6 декабря 2017 года, я столкнулся с проблемой, связанной с приложениями на базе Android от компании Cordova. Это приложение включает в себя IFrames, которые позволяют пользователям перемещаться по частям сайта электронной коммерции моих компаний из приложения.
Навигация между страницами, загруженными в IFrames , больше не отправляет информацию cookie в заголовки запроса.
Информация, такая как идентификаторы сеансов, которые хранятся в файле cookie, не передается на следующую страницу, что, в свою очередь, заставляет следующую страницу запускать совершенно новый сеанс пользователя!
Странно, однако, что любые вызовы AJAX, предварительно сформированные на странице в IFrames (например, для извлечения количества элементов в корзине) и запросов на ресурсы (css js, файлы изображений и т.д.), отправляют информацию cookie в заголовки запроса хорошо. Идентификатор сеанса в этих заголовках идентичен между страницами, что указывает на постоянство сеанса.
Файлы cookie создаются нормально, и я могу видеть их при использовании инструментов разработчика Chrome на панели приложений в домене компаний. Они просто не передаются на следующую страницу.
Я испытал эту проблему на устройстве Android 7.1.1. Когда я отключу приложение Chrome на этом устройстве, заголовки запросов файлов cookie в IFrames в приложении снова начнут работать нормально, возможно, веб-просмотр Кордовы больше не использует Chrome, когда он отключен?
Кто-нибудь знает, что может вызвать эту проблему? Может ли это быть связанным с кукисами SameSite или строгими изменениями изоляции сайта или другими изменениями, связанными с безопасностью в Chrome 63?
Проблема похожа на эту ошибку Chromium, которая была исправлена в октябре 2016 года: https://bugs.chromium.org/p/chromium/issues/detail?id=634311
Однако в Webview есть файлы cookie сторонних разработчиков в классе SystemCookieManager библиотеки Cordova (Cordova Android 6.4.0):
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
cookieManager.setAcceptThirdPartyCookies(webView, true);
}
Извините, если я не указал ничего достаточно ясно. Я рад предоставить дополнительную информацию, если кто-то может помочь с этой проблемой.