#ios #xcode #cordova #session-cookies #ios14
#iOS #xcode #cordova #сеанс-файлы cookie #ios14
Вопрос:
Я использую приложение для iOS на базе Cordova, которое использует файлы cookie сеанса HTTP для поддержания сеанса сервера. Недавно apple применила ITP к приложениям iOS 14, созданным с использованием XCode 12.3. Поэтому, когда мы используем XCode 12.x для создания приложений, предназначенных для iOS 14, любой вызов XHR на наш сервер будет рассматриваться как вызов третьей стороны, и все сеансовые файлы cookie будут удалены при добавлении в webview. Это полностью сломало наше производственное приложение.
Существуют плагины, такие как nativeXHR, которые работают как прокси и выполняют вызов API на родном языке. Это работает для вызовов XHR, однако любые операции единого входа, которые полагаются на файлы cookie, теперь не выполняются. Я пытаюсь вызвать URL-адрес на основе единого входа в браузере inapp, но это не удается, поскольку в браузере приложений нет аутентифицированных файлов cookie. Файлы cookie, хранящиеся в собственном CookieStore, не могут быть синхронизированы с главным окном cordova или с окном браузера приложения
Я попытался реализовать webproxy, предложенный NiklasMerz в реализации PR # 1030 Cordova, добавил плагин прокси и в браузере приложений PR # 825 для использования того же пула процессов. Тем не менее, я не могу синхронизировать файлы cookie между веб-представлениями native и Cordova.
Я также попытался добавить домены, связанные с приложениями, в свой info.plist и добавил то же хранилище WkWebViewData во всех веб-представлениях, что и в WkProcessPool.
if (@available(iOS 14.0, *)) {
configuration.limitsNavigationsToAppBoundDomains = YES;
WKWebsiteDataStore *dStore =[[CDVWebViewProcessPoolFactory sharedFactory] sharedDataStore]; // I used a nonPersistant data store, but same object for all instances of webview
configuration.websiteDataStore = dStore;
} else {
// Fallback on earlier versions
}
Все мои усилия не сработали. Будем признательны за любую помощь в определении основной причины невозможности синхронизации файлов cookie между nativeXHR / webproxy и cordova main webview.
Ответ №1:
Файлы cookie начали работать после настройки, однако работают только для ourdomain.com
<preference name="scheme" value="https" />
<preference name="hostname" value="ourdomain.com" />