Бета-версия iOS 13 WebKit прекращает поддержку файлов cookie

У меня есть работающее приложение на основе Cordova, в настоящее время имеющее относительно большую базу пользователей. Пока проблем нет, кроме этой, которую Apple не собирается исправлять. Впрочем, это нормально, мы придумали уродливые обходные пути, просто чтобы двигаться дальше...

Но вот выходит iOS 13 (бета-версия 8), и мы узнаем, что WebKit в этом выпуске вообще не отправляет файлы cookie обратно на сервер. Ни разу, ни на старте - ни разу. До выхода iOS 13 осталось несколько недель, и я просто не знаю, что нам делать, когда все пользователи перейдут на нее, а наше приложение перестанет работать...

Мы используем файлы cookie для управления сессиями, ничего особенного, классический старый сервер на основе Jetty. Обходной путь, который я сделал для проблемы с первым использованием, заключается в том, чтобы добавить параметр jsessionid к URL-адресу для каждого запроса, а затем удалить его на стороне сервера, преобразовать в файл cookie и отправить дальше по цепочке. Я не знаю, безопасно ли использовать его все время, предполагая, что WebKit перестанет отправлять файлы cookie. Вот некоторые связанные ошибки, ожидающие рассмотрения, но маловероятно, что Apple даже обратит на них внимание:

Кто-нибудь испытывает подобные проблемы? Как вы с этим справляетесь?


person Dima    schedule 27.08.2019    source источник


Ответы (3)


У меня была такая же проблема с моим приложением ionic 3. Я нашел обходные пути, используя:

Заменив вызовы API из rxjs собственным HTTP-вызовом цели C, файл cookie хорошо сохраняется после http-ответа серверной части. Может быть, вы можете попробовать с этим ...

person Stéphane Maleyrie    schedule 06.09.2019
comment
Спасибо за то, что поделился этим. К сожалению, мы не с Ionic, а с простой Cordova, в итоге мы отправили идентификатор сеанса как часть URL-адреса и настроили управление сеансом на стороне сервера. Невероятно то, что никого в Apple WebKit, кажется, это не волнует. Как вообще возможно сделать основной релиз с ухудшенной производительностью, который ломает вещи, выше моего понимания. - person Dima; 07.09.2019

Добавьте этот плагин https://github.com/oracle/cordova-plugin-wkwebview-file-xhr, он перехватывает запросы XHR и обрабатывает их этим плагином. Меня устраивает.

person Doctor.Who.    schedule 25.09.2019
comment
Наше приложение основано на http-клиенте Axios, это зрелое приложение, я не понимаю, как можно заменить все запросы на использование этого обходного плагина. Все равно спасибо! - person Dima; 25.09.2019
comment
@Dima Просто добавьте этот плагин, ничего больше, и вы увидите волшебство. Если вы используете http, а не https, вам нужно добавить <preference name="InterceptRemoteRequests" value="all" /> в config.xml. - person Doctor.Who.; 26.09.2019
comment
@DoctorWho - Спасибо! Да, кажется, это полностью решило наши проблемы. Волшебно. Я не совсем понимаю, что на самом деле делает этот плагин. Похоже, он спасает ситуацию. Но я не совсем уверен, стоит ли исправлять ошибки с помощью плагинов. Надеюсь, кто-нибудь из проекта WebKit или Apple сможет присоединиться и прояснить ситуацию. - person Dima; 30.09.2019

Ошибка была подтверждена и исправлена ​​командой WebKit и выпущена в iOS 13.2. Я протестировал бета-версию, и теперь она работает.

person Dima    schedule 24.10.2019
comment
Есть ли у вас какие-либо сведения о том, когда мы можем ожидать публичного выпуска iOS 13.2? Я не мог найти никакой полезной информации об этом. Что я спрашиваю, стоит ли использовать этот плагин или я могу просто немного подождать? - person Fabian N.; 24.10.2019