iOS9不会从安全页面(SSL / HTTPS)加载不安全的资源
我正尝试使用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上运行。
我在应用程序PLIST文件中将NSAppTransportSecurity设置为NSAllowsArbitraryLoads:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
虽然通过HTTPS加载页面时,图像加载正常,但CSS文件不是。 看起来像UIWebView块从安全页面加载不安全的资源。
是否有任何UIWebView的设置,允许通过不安全的连接加载CSS?
这与ATS无关。 WebKit强制执行混合内容策略,当主机页面通过https提供服务时,不允许访问某些“活动”内容(JS,CSS等)的内容以通过不安全的连接进行加载。
如果您在Inspector中检查您的页面,您会在错误面板中看到这个报告。
跟进:您无法关闭混合内容阻止。 允许不安全的CSS或JS将整个页面的安全性降低到最不安全的资源。 如果您必须通过http加载css / js,则解决方案是通过http加载整个页面。 这样,用户看到的UI就能正确反映内容的安全性。
在您的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
希望这应该适合你。
应用程序传输安全性已在iOS9发行版中修 现在,您的应用程序可以安全地连接到不安全的连接。 和iOS部队进行安全连接。 这可能与您的情况有冲突。
从Apple文档
如果您的应用需要向不安全的域请求,则必须在应用的Info.plist文件中指定此域
所以我认为这可能会在为网页加载.css
文件时造成问题。
因此,请尝试在info.plist
指定您的域,并检查是否加载了.css
文件。
编辑:
Spotlight:您需要在info.plist
添加更多密钥。
看看这个关键NSThirdPartyExceptionAllowsInsecureHTTPLoads
这允许一个不受开发人员控制的服务域,并通过传递不安全的资源为传输层添加一个例外。
以下是用于为App Transport Security添加密钥的结构:
有关所有密钥的更多详细信息和解释,请查看本说明 - App Transport Security Technote
链接地址: http://www.djcxy.com/p/34865.html上一篇: iOS9 does not load insecure resources from a secure page (SSL/HTTPS)
下一篇: How can I add NSAppTransportSecurity to my info.plist file?