当从 nativeXHR 或 Web 代理发出 XHR 调用时,Cookie 不会在 iOS 14 + XCode 12 同步到 Cordova main window

Cookies wont sync in iOS 14 + XCode 12 to Cordova main window when XHR calls made from nativeXHR or web proxy

我正在使用基于 Cordova 的 iOS 应用程序,它使用 HTTP 会话 cookie 来维护服务器会话。最近苹果强制执行 ITP 到 iOS 14 个使用 XCode 12.3 构建的应用程序。因此,当我们使用 XCode 12.x 构建针对 iOS 14 的应用程序时,对我们服务器的任何 XHR 调用都将被视为第三方调用,并且所有会话 cookie 都将被删除,无法添加到 webview .这完全破坏了我们的生产应用程序。

有像 nativeXHR 这样的插件,它像代理一样工作,并在本机中进行 API 调用。这适用于 XHR 调用,但是,任何依赖 cookie 的单点登录操作现在都失败了。我正在尝试在应用程序浏览器上进行基于 SSO 的 URL 调用,但它失败了,因为应用程序浏览器中没有经过身份验证的 cookie。存储在本机 cookieStore 中的 Cookie 无法同步到 cordova main window 或 In app browser window

我尝试实施 NiklasMerz in PR #1030 Cordova implementation, added proxy plugin and In app browser PR #825 建议的 webproxy 以使用相同的进程池。我仍然无法在本机和 Cordova 网络视图之间同步 cookie。

我还尝试将应用程序绑定域添加到我的 info.plist 并在所有 Web 视图中添加与 WkProcessPool 中相同的 WkWebViewData 存储。

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
}

我所有的努力都没有奏效。感谢任何帮助确定无法在 nativeXHR/webproxy 和 cordova 主 webview 之间同步 cookie 的根本原因。

Cookies 在设置后开始工作,但仅适用于 ourdomain.com

<preference name="scheme" value="https" />
<preference name="hostname" value="ourdomain.com" />