解决WKWebView http POST不再在iOS 11.3中发送参数的问题
我的应用程序有两个视图:解决WKWebView http POST不再在iOS 11.3中发送参数的问题,post,http-post,ios11,wkwebview,ios11.3,Post,Http Post,Ios11,Wkwebview,Ios11.3,我的应用程序有两个视图: 等待用户凭据的登录视图 包含webview的主视图 当用户输入其凭证时,会向服务器发送一个本机异步POST方法。如果凭据有效,用户将被重定向到webview视图,并使用加载(请求)方法加载它 注意:请求也是使用上述凭证的POST方法 这两步身份验证的原因是避免打开webview时出现403错误登录/密码对;如果第一步身份验证失败,用户将停留在登录视图上 10.0和11.2之间的iOS版本运行应用程序时不会出现任何问题。使用iOS 11.3的设备和模拟器打开webv
- 等待用户凭据的登录视图
- 包含webview的主视图
- 使用异步POST方法验证成功,这意味着凭据正确,应用程序和服务器之间的通信正常工作
- 加载webview时,服务器不会收到任何用于身份验证的参数,这解释了403登录/密码错误
PS:无法将iOS 11.3标记添加到它,如果有人能够添加它,我们将不胜感激。我在这里遇到了相同的问题:(,不知道为什么在WKWebview加载URL请求时不发送POST参数。
您可以使用URL会话加载网站内容(html资源)并将其填充到WKWebview。但是,如果您的页面使用cookie,它将不会维护历史记录或navigationRequest。我使用了UIWebView而不是WKWebview,它工作了!遗憾的是,您无法使用WKWebview进行此操作 它在webView:decidePolicyForNavigationAction:decisionHandler:中肯定不起作用,因为navigationAction.request是只读的,是一个不可变的NSURLRequest实例,您无法更改 如果我理解正确,WKWebView在单独的内容和网络进程中运行沙盒,并且,至少在iOS上,无法拦截或更改其网络请求
如果返回UIWebView,则可以执行此操作。我已使用WKWebView对iOS 12.1.4进行了测试,并按预期工作。唯一需要确保请求具有正确的标头。在我的情况下,问题是缺少内容类型,必须是“application/x-www-form-urlencoded”。因此,您需要确保主体部分符合,并且空格字符表示为所述的“+” 关于WKWebView提到的代理webView:decidePolicyFor:没有显示主体部分,但它实际上已发送。出于内存/安全原因,我可能会假设显示为空,或者可能只是一个bug,到目前为止对此不太关心
希望能有所帮助您找到任何解决方案或解决方法了吗?暂时,我更喜欢使用UIWebView而不是WKWebView作为解决方法。我可以确认这对iPadOS 13.5.1中的WKWebView有效。可以按如下所述发送内容类型标题: