UIWebview未在ios9中加载URL

时间:2015-10-18 06:49:53

标签: ios uiwebview

我想在网页视图中加载网址,如

NSString *urlAddress = @"http://ashu007blr.tumblr.com/loadadd";
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[self.adWeb loadRequest:requestObj];

但我得到的错误就像

一样
The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.

我找到谷歌的解决方案然后我在我的NSAppTransportSecurity中添加info.plist就像

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

但它不起作用我得到同样的错误。

2 个答案:

答案 0 :(得分:2)

你做到了吗?

打开您的info.plist文件,如此图片

http://imgur.com/mVvKD1R

并添加以下两个属性

  1. NSAppTransportSecurity

  2. NSAllowsArbitraryLoads

  3. 注意:第一个是 NSDictionary 类型,第二个是 BOOL 类型

答案 1 :(得分:0)

对于没有完美转发保密的适当设置的服务器的HTTPS连接会发生这种情况。

请参阅列出要求的Apple Tech Note

我们自己的服务器https://prod.ly需要一个新的SSL证书,即一个带有SHA256签名的证书。它仍然使用较旧的,不太安全的算法。

这些是App Transport Security要求:

  1. 服务器必须至少支持1.2版传输层安全性(TLS)协议。
  2. 连接密码仅限于提供前向保密的密码(请参阅下面的密码列表。)
  3. 证书必须使用SHA256或更好的签名哈希算法进行签名,使用2048位或更高的RSA密钥或256位或更高的椭圆曲线(ECC)密钥。
  4. 无效的证书会导致硬故障并且无法连接。
  5. 这些是公认的密码:

    • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
    • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
    • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
    • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
    • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
    • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
    • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
    • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
    • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
    • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
    • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

    PS:您可以使用SSL实验室检查页面检查服务器是否适合使用ATS / PFC:例如: https://www.ssllabs.com/ssltest/analyze.html?d=api.productlayer.com

    PPS:您的原始网址可能是HTTP,但是通过HTTPS访问的HTML中引用了多个引用的资源,例如: https://secure.assets.tumblr.com