WebView 在 iOS 9 中不加载非标准端口

Posted

技术标签:

【中文标题】WebView 在 iOS 9 中不加载非标准端口【英文标题】:WebView doesn't load non-standard port in iOS 9 【发布时间】:2017-05-12 01:51:38 【问题描述】:

我正在尝试使用 WebView 在端口 8100 上加载网站。它是 HTTPS。我无法控制更改它所服务的端口。

它可以在 ios 10 上的模拟器和设备中正常加载。它在运行 iOS 9.3.5 的 iPad Mini 上失败 - 我看到的只是空白屏幕。

我尝试在 Info.plist 中将“App Transport Security Settings > Allow Arbitrary Loads”添加为 YES,但这并没有解决问题。

有什么想法吗?

【问题讨论】:

尝试在您的 ipad mini 上先在 safari 中打开。网络不一样。 我收到一个证书警告“无法验证服务器身份” - 在点击“信任”后它在 Safari 中工作 - 我猜除了修复证书之外没有简单的解决方法? ios 9.0 及更高版本 ATS 强制使用 https 连接,您需要修复证书或尝试在应用的 Info.plist 文件中添加域(不确定这是否会阻止您的审批流程)。 【参考方案1】:

当您设置Allow Arbitrary Loads = YES 时,还在NSAppTransportSecurity 下设置以下键:

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

【讨论】:

【参考方案2】:

您在点击 https://时需要信任证书

在你的课堂上写下。出于调试目的,请勿在生产中发布。

//Swift
extension NSURLRequest 
    static func allowsAnyHTTPSCertificate(forHost host: String) -> Bool 
        return true
    


//Objc

@implementation NSURLRequest (NSURLRequestWithIgnoreSSL) 

+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host

    return YES;


@end

【讨论】:

以上是关于WebView 在 iOS 9 中不加载非标准端口的主要内容,如果未能解决你的问题,请参考以下文章

启用允许任意加载应用程序传输安全设置在 XCODE 9.2 和 iOS 11.2 中不起作用

滑动以返回在 ios 中的颤振 webview 中不起作用

navigator.permissions.query 在 android/ios webview 中不起作用

调用 http:// 在 ios 9 中不起作用 [重复]

使用 Delphi XE2 在 MacOS 中不显示 Webview

Maven非标准版本控制意外的最新版本结果