我在使用UIWebView
请求加载https
时遇到问题。
我已经阅读了一些相关的答案,但他们更加困惑我。
这是我的代码:
我在下面使用的链接将重定向到另一个页面。
class PartnersWebViewControlerViewController: UIViewController, NSURLConnectionDelegate, UIWebViewDelegate {
@IBOutlet weak var admitadWebView: UIWebView!
let url = "https://ad.admitad.com/g/54tjzvqfv92260a476c4ffa09d8e84/subid/26/"
override func viewDidLoad() {
super.viewDidLoad()
admitadWebView.delegate = self
let requestURL = URL(string:url)
let request = URLRequest(url: requestURL!)
admitadWebView.loadRequest(request)
}
}
但是当我将https
更改为http
时,一切正常
在这个答案的帮助下
UIWebView to view self signed websites (No private api, not NSURLConnection) - is it possible?
我尝试以下列方式符合这些协议NSURLConnectionDelegate
,UIWebViewDelegate
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
let urlConnection: NSURLConnection = NSURLConnection(request: request as URLRequest, delegate: self)!
urlConnection.start()
return true
}
func connection(_ connection: NSURLConnection, canAuthenticateAgainstProtectionSpace protectionSpace: URLProtectionSpace) -> Bool {
return true
}
func connection(_ connection: NSURLConnection, didReceive challenge: URLAuthenticationChallenge) {
let host = "www.ad.admitad.com"
if challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust &&
challenge.protectionSpace.host == host {
let credential = URLCredential(trust: challenge.protectionSpace.serverTrust!)
challenge.sender!.use(credential, for: challenge)
} else {
challenge.sender!.performDefaultHandling!(for: challenge)
}
}
但是,我仍然有白屏,没有任何打印记录。
任何帮助都表示赞赏。这是我第一次遇到这样的问题,很抱歉,如果我的问题看起来很虚伪。
我正在使用ios 10.3 UPD:仅在设备(iphone 6)上启动时才会出现此问题
答案 0 :(得分:0)
据我所知,Apple仅允许您出于安全原因使用HTTPS。要访问HTTP网站,您必须更改Info.plist(在支持文件文件夹内)。在那里,您必须添加一个新密钥:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>yourwebsite.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>otherdomain.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
将“yourwebsite.com”替换为您要访问的网站的域名。这告诉xcode您要访问该网站,并且您知道它是不安全的HTTP。如果您还要访问其他域,则可以在.plist中向字典添加更多键,如上所示“otherdomain”。
答案 1 :(得分:0)