【问题标题】:WebView doesn't load non-standard port in iOS 9WebView 在 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 文件中添加域(不确定这是否会阻止您的审批流程)。

标签: ios uiwebview


【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2016-01-18
      • 1970-01-01
      • 1970-01-01
      • 2015-07-25
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      • 2011-10-01
      • 2013-06-01
      相关资源
      最近更新 更多