我的申请有两种观点:
当用户输入其凭据时,将向服务器发送本机异步POST方法。如果凭据有效,则将用户重定向到webview视图并使用load(request)方法加载它。
注意:request也是使用所述凭据的POST方法。
这种两步验证的原因是避免使用403错误登录/密码对打开webview;如果在第一步中验证失败,则用户将保持登录视图。
Here is a flow chart explaining how the authentication works
10.0和11.2之间的iOS版本运行应用程序没有任何问题。使用iOS 11.3的设备和模拟器打开webview,出现403错误。
到目前为止,我可以断言两件事(并且已经过我们的后端测试):
目前这个问题导致我的应用程序无法使用,因此非常需要快速修复。 GET请求已经过测试,其参数的发送没有任何问题。
任何建议都是最受欢迎的。
TL; DR - 由于iOS11.3 POST请求在WKWebViews中无法正常工作,如何使用GET请求进行或多或少的安全认证?
PS:无法添加iOS 11.3标签,如果有人可以添加它会非常感激。
我有同样的问题:(,不知道为什么POST参数不通过WKWebview加载URL请求时发送。你可以用URL会话加载网站内容(html资源)并填写到WKWebview。但它不会保留历史记录,或者如果您的页面使用cookie,则返回navigationRequest。
我使用UIWebView而不是WKWebView,它工作正常!
遗憾的是,你不能用WKWebView做到这一点。
它肯定不适用于webView:decisionPolicyForNavigationAction:decisionHandler:因为navigationAction.request是只读的,而且是一个不可更改的NSURLRequest实例。
如果我理解正确,WKWebView会在单独的内容和网络流程中运行沙箱,至少在iOS上,无法拦截或更改其网络请求。
如果您退回到UIWebView,则可以执行此操作。