首页 > 解决方案 > Cordova GET 请求在 IOS 上丢失服务器端 cookie

问题描述

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

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

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

Cordova/插件版本:

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

标签: ioscordova

解决方案


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

"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

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


推荐阅读