ionic-webview 的 Cordova 移动应用无法在 iOS 14 WkWebview 中 store/retry session cookie
Cordova mobile app with ionic-webview fails to store/retry session cookies in iOS 14 WkWebview
我正在为我的 Cordova 移动应用程序使用 iOS 14 Device/Simulator,它使用 cordova-plugin-ionic-webview 并启用 WkWebView 设置。
我在 config.xml
中设置了以下选项
<access origin="myapp://mobileapp" />
<allow-navigation href="myapp://mobileapp" />
这使得我所有的 xhr 调用都具有“origin:myapp://mobileapp”header。我已经适当地定义了所有 CORS header。
现在我的身份验证 XHR 调用有 2 APIs (a) 身份验证和 (b) 加强操作。
API (b) 将使用由 API (a) 设置的 HTTPOnly 安全 cookie 以进行适当的响应。
以上两个 APIs 与 UIWebview、iOS 13.5、iOS 13.7 模拟器和设备完美配合。但是在 iOS 14、iOS 13.3 中失败。在分析时,我看到 API (a) 中发送的 cookie 未存储在 WkWebview 中,因此在调用 API (b) 时不会发送它们。所以第二个 API 无法完成。
我已经看到 cookies ignored in first execution, tracking prevention and wkwebview bug 但无法确定问题所在。
APIs 在我将它们 In-AppBrowser 与 WkWebview 一起使用时运行良好,但仅在主 cordova 视图中失败。
使用 cusotm origin 和跨平台 XHR 调用时,我是否必须在 ionic-webviw 插件中设置任何特殊设置?
我的 XHR 调用是针对“*https://mydomain.app.com/api/firstapi*" and "*https://mydomain.app.com/api/secondapi*",而 firstapi 将发送 header”set-cookie”,域设置为“.app.com”。因此,当我们使用自定义 origin 进行 XHR 调用时,此类 cookie 将被视为第三方 cookie 或第一方 cookie?
此处的任何帮助都将非常有帮助。我正在寻找使用 HTTPOnly cookies
实现 Cordova+WkWebView+XHR 登录调用的正确方法
XCode 12 + iOS 14 永久停止与 Intelligent Tracking Prevention technology. Apple's solution for this is to go with App Bound domain.
同步第三方 cookie
很遗憾,目前我们无能为力。有像 nativeXHR 这样的插件试图通过将 API 调用路由到本机代码来解决,但不会将 cookie 同步到 wkwebview 的 cordova 实例。
更新:
如果只想使用一台服务器,仍然可以同步 Cookie。在 config.xml 中设置以下首选项以匹配您的域。这样 origin 将被设置为 app://yourdomain.com。因此 wkwebview 会将 cookie 与 domain/subdomain *.yourdomain.com.
同步
<preference name="scheme" value="https" />
<preference name="hostname" value="yourdomain.com" />
我正在为我的 Cordova 移动应用程序使用 iOS 14 Device/Simulator,它使用 cordova-plugin-ionic-webview 并启用 WkWebView 设置。
我在 config.xml
中设置了以下选项<access origin="myapp://mobileapp" />
<allow-navigation href="myapp://mobileapp" />
这使得我所有的 xhr 调用都具有“origin:myapp://mobileapp”header。我已经适当地定义了所有 CORS header。
现在我的身份验证 XHR 调用有 2 APIs (a) 身份验证和 (b) 加强操作。 API (b) 将使用由 API (a) 设置的 HTTPOnly 安全 cookie 以进行适当的响应。
以上两个 APIs 与 UIWebview、iOS 13.5、iOS 13.7 模拟器和设备完美配合。但是在 iOS 14、iOS 13.3 中失败。在分析时,我看到 API (a) 中发送的 cookie 未存储在 WkWebview 中,因此在调用 API (b) 时不会发送它们。所以第二个 API 无法完成。
我已经看到 cookies ignored in first execution, tracking prevention and wkwebview bug 但无法确定问题所在。
APIs 在我将它们 In-AppBrowser 与 WkWebview 一起使用时运行良好,但仅在主 cordova 视图中失败。
使用 cusotm origin 和跨平台 XHR 调用时,我是否必须在 ionic-webviw 插件中设置任何特殊设置?
我的 XHR 调用是针对“*https://mydomain.app.com/api/firstapi*" and "*https://mydomain.app.com/api/secondapi*",而 firstapi 将发送 header”set-cookie”,域设置为“.app.com”。因此,当我们使用自定义 origin 进行 XHR 调用时,此类 cookie 将被视为第三方 cookie 或第一方 cookie?
此处的任何帮助都将非常有帮助。我正在寻找使用 HTTPOnly cookies
实现 Cordova+WkWebView+XHR 登录调用的正确方法XCode 12 + iOS 14 永久停止与 Intelligent Tracking Prevention technology. Apple's solution for this is to go with App Bound domain.
同步第三方 cookie很遗憾,目前我们无能为力。有像 nativeXHR 这样的插件试图通过将 API 调用路由到本机代码来解决,但不会将 cookie 同步到 wkwebview 的 cordova 实例。
更新:
如果只想使用一台服务器,仍然可以同步 Cookie。在 config.xml 中设置以下首选项以匹配您的域。这样 origin 将被设置为 app://yourdomain.com。因此 wkwebview 会将 cookie 与 domain/subdomain *.yourdomain.com.
同步<preference name="scheme" value="https" />
<preference name="hostname" value="yourdomain.com" />