在 UIWebview 中加载带有帖子的 URL 的问题

Posted

技术标签:

【中文标题】在 UIWebview 中加载带有帖子的 URL 的问题【英文标题】:Issue with loading a URL with post in UIWebview 【发布时间】:2016-04-08 08:42:37 【问题描述】:

我有一个基于 coredova 的 ios 应用程序并尝试在 UIWebView 上加载 URL。例如:

http://www.something.com

此 URL 加载没有任何问题,但问题是当我在文本字段中输入电子邮件后点击加载页面上的提交按钮时。这是一个 POST 请求,但该请求永远不会到达服务器。

提交时,回调到下面的委托方法,导航类型为 UIWebViewNavigationTypeFormSubmittedrequest HTTPBody 包含用户输入的电子邮件。这个委托方法只返回 YES。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

在此之后,我得到了成功回调,但屏幕仍然保留在旧屏幕本身。

- (void)webViewDidFinishLoad:(UIWebView *)webView 

请帮我找出这个问题的原因。

另外,请注意,当我在任何浏览器中加载时,相同的 URL 都可以正常工作。

【问题讨论】:

你是否从 shouldStartLoadWithRequest 委托方法返回 YES? 是的。我返回是。 是经典的 http 表单还是提交时存在一些 javascript 逻辑? Javascript 逻辑存在,但它只是在做页面验证。 可能是由于某些特定的 Safari 引擎功能而导致内部崩溃。我建议通过 OS X Safari 直接在设备或模拟器中附加到 javascript 控制台,看看发生了什么 【参考方案1】:

自 iOS 9 起,所有 HTTP 请求都被禁止,应使用 HTTPS。

如果您确实需要使用 HTTP,有一个解决方法。

将此添加到您的 .plist:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

Image example

【讨论】:

作者说首页加载良好,所以不是传输安全问题

以上是关于在 UIWebview 中加载带有帖子的 URL 的问题的主要内容,如果未能解决你的问题,请参考以下文章

在 UIWebView 中加载请求之前修改 URL

URL 不会在 UIWebView 中加载,但会加载到 safari 浏览器中

如何在Swift中的UIWebView中加载URL?

url 未在 UIWebView 中加载

在情节提要中加载 UIWebView 时出错

在 uipopover 中加载 uiwebview