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 中不起作用
navigator.permissions.query 在 android/ios webview 中不起作用