ios - 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" />
解决方案
您需要解决一些问题。这两个插件现在都过时了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
然后从那里开始,希望这会有所帮助
推荐阅读
- python - 无法打开文件'/c':[Errno 2] 没有这样的文件或目录
- jenkins - jenkins 变量未显示在 shell 命令中
- .net - VB.net 应用程序保留以前的版本
- pipe - 检测管道挂起
- jquery - 如何将两个输入字段连接成一个隐藏字段以传递表单提交
- python - 在 python 中将数据从 1280 Hz 重新采样到 240 Hz
- html - 使用 rails content_tag 实现 Bootstrap Collapse
- sql - 将 Web API LocalHost 更改为服务器
- c++ - 为什么传递值返回函数在运算符函数上可以正常工作以重载 = 运算符而不是其他运算符?
- java - 如何在 rsql-jpa-specification 中为列表实现 LIKE 操作?