Cordova GET 请求在 IOS 上丢失服务器端 cookie

Cordova GET request looses server-side cookie on IOS

我们是 运行 一个 Cordova 应用程序,除了 IOS 上的 GET 请求外,它工作得非常好。在这种情况下,会话 cookie 不会传输到服务器。通常,我们使用 POST 请求来进行其余 api 调用。例外是我们通过 GET 请求加载的图像。因此,授权用户在加载图片时不会被服务器识别为已登录。

当 运行 在同一设备上的浏览器上运行 Web 应用程序时,一切正常。此外,android 上也没有问题。我的猜测是因为不同的http方法,webview选择不使用相同的cookies。这可能与现已弃用的 cordova 白名单插件有关。

登录时在服务器上生成 cookie。

Cordova/plugin 版本:

"cordova-ios": "^6.2.0",
"cordova-plugin-splashscreen": "^6.0.0",
"cordova-plugin-statusbar": "^2.4.3",
"cordova-plugin-vibration": "^3.1.1",
"cordova-plugin-wkwebview-engine": "^1.2.2",
"cordova-plugin-wkwebview-file-xhr": "^3.0.0",
"ios": "^0.0.1"

Cordova ios 首选项:

<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<preference name="StatusBarOverlaysWebView" value="false" />
<preference name="scheme" value="app" />
<preference name="hostname" value="localhost" />
<preference name="WKWebViewOnly" value="true" />

您需要解决一些问题。这两个插件现在都已过时 cordova-ios 6+

"cordova-plugin-wkwebview-engine": "^1.2.2",
"cordova-plugin-wkwebview-file-xhr": "^3.0.0"
 

这也已过时

<preference name="WKWebViewOnly" value="true" />

默认情况下,webview 现在是 WKwebview,因此您不需要 xhr 插件,您使用的插件也已过时。删除它们并添加 cordova-plugin-ios-xhr

然后从那里开始,希望这对您有所帮助