iOS9不会从安全页面加载不安全的资源(SSL/HTTPS)

UrK*_*UrK 27 ssl http uiwebview ios ios9

我正在尝试使用https:// URL将页面加载到iOS9上的UIWebView中.加载的页面包括来自不安全服务器的CSS和图像.

例如,页面加载:HTTPS://www.example.com/包括的样式表的http://www.example.com/style.css和图像的http://www.example.com/image.jpg

如果通过不安全连接(常规http)加载原始页面,一切正常.通过HTTPS和HTTP,一切都可以在iOS8上运行.

我没有设定NSAppTransportSecurityNSAllowsArbitraryLoads应用plist文件:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
Run Code Online (Sandbox Code Playgroud)

虽然通过HTTPS加载页面时,图像加载正常,但CSS文件不加载.似乎UIWebView阻止从安全页面加载不安全的资源.

是否有任何UIWebView设置允许通过不安全的连接加载CSS?

Oli*_*ver 17

这与ATS无关.WebKit强制执行混合内容策略,当通过https提供主机页面时,该策略不允许通过不安全的连接加载某些"活动"内容(JS,CSS等)类.

如果在检查器中检查页面,您将在错误面板中看到此报告.


跟进:您无法关闭混合内容阻止.允许不安全的CSS或JS会将整个页面的安全性降低到安全性最低的资源的安全性.如果你必须通过http加载css/js的解决方案是通过http加载整个页面.这样,用户看到的UI正确地反映了内容的安全性.

  • 作为修改后问题的后续内容:您无法关闭混合内容阻止功能.允许不安全的CSS或JS会将整个页面的安全性降低到安全性最低的资源的安全性.如果你必须通过http加载css/js的解决方案是通过http加载整个页面.这样,用户看到的UI正确地反映了内容的安全性. (3认同)

小智 13

在info.plist中,您需要添加以下App Transport Security密钥:

NSAppTransportSecurity                                      Dictionary
    NSAllowsArbitraryLoads                                  Boolean       YES
    NSExceptionDomains                                      Dictionary    
        **YOUR-DOMAIN-HERE**                                Dictionary
            NSExceptionAllowsInsecureHTTPLoads              Boolean       YES
            NSIncludesSubdomains                            Boolean       YES
            NSThirdPartyExceptionAllowsInsecureHTTPLoads    Boolean       YES
Run Code Online (Sandbox Code Playgroud)

希望这对你有用.


Kam*_*pai 5

在iOS9版本中修订了App Transport Security.现在,您的应用程序可以安全地从不安全的连接.iOS强制进行安全连接.在您的情况下,这可能是冲突.

来自Apple文档

如果您的应用需要向不安全的域发出请求,则必须在应用的Info.plist文件中指定此域

所以我认为这可能会在加载.css网页文件时出现问题.

因此info.plist,请尝试指定您的域并检查.css文件是否已加载.

编辑:


Spotlight:您需要在此处添加更多密钥info.plist.

查看此密钥,NSThirdPartyExceptionAllowsInsecureHTTPLoads这允许服务域不受开发人员控制,并通过传递不安全资源向传输层添加例外.

App Transport Security添加密钥的结构如下:

在此输入图像描述

有关所有密钥的更多详细信息和说明,请查看此说明 - App Transport Security Technote