Файлы cookie не будут синхронизироваться в iOS 14 XCode 12 с главным окном Cordova при вызовах XHR из nativeXHR или веб-прокси

#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" />