我正在使用Cordova(PhoneGap)和cordova-plugin-ionic-webview
使用微调的Ionic Engine(使用WKWebview)。
我能够使用安全和仅HTTP身份验证Cookie进行登录,并且在使用iOS应用程序时一切正常。当我关闭应用程序时,尽管cookie丢失了。
如何防止这种情况?
Android上没有此问题(并且localStorage在两个平台上均正确保持其状态)。
在他们的Github上仍未解决问题:https://github.com/ionic-team/cordova-plugin-ionic-webview/issues/87
答案 0 :(得分:1)
我认为默认情况下,现在看来似乎已经在ionic或cordova项目上安装了WKWebView,至少在我看来还是这样(它在plugins文件夹中显示为插件)。因此,我卸载了该插件并将此行添加到我的config.xml中:
<preference name="CordovaWebViewEngine" value="CDVUIWebViewEngine" />
然后我为HTTP提供程序全局设置此值:
$httpProvider.defaults.withCredentials = true;
或通过这种方式针对您拥有的每个HTTP请求执行此操作:
$http.post(url, {withCredentials: true, ...})
然后将其设置在我的.php /服务器文件中:
header("Access-Control-Allow-Origin: http://localhost:8100"); // make sure this is the same on the client side
header("Access-Control-Allow-Headers: content-type,authorization");
header("Access-Control-Allow-Credentials: true");
上面提到的修复程序使我可以在应用程序的每个页面/请求中保留相同的cookie /会话。
我希望这会有所帮助。
编辑:
从我遇到此问题时可以找到的内容,无法使用WKWebView保留cookie /会话,因为Apple尚未添加修复程序(我可能是完全错误的,这就是我当时发现的结果。我认为您要么必须还原到UIWebView,要么完全使用其他方法。