Chr*_*ker 25 ssl uiwebview ios
我在UIWebView中嵌入了一个网站.在开发过程中,我指向localhost.问题是每当它命中"https://"url时它就不会加载.当我在移动safari中加载网址时,我得到这个弹出窗口:
有没有办法用UIWebView覆盖它以允许未验证的URL?
Nic*_*ood 59
如果它仅用于开发期间的测试,您可以在NSURLRequest上创建一个类别并覆盖以下私有方法:
#if DEBUG
@implementation NSURLRequest (NSURLRequestWithIgnoreSSL)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host
{
return YES;
}
@end
#endif
Run Code Online (Sandbox Code Playgroud)
只需将它放在你的.m文件中的任何位置(例如app delegate),或者将它放在它自己的.m文件中.您不需要匹配的头文件.
这#if DEBUG
是一个预防措施,以防止您在提交到Apple时意外地将其保留为启用状态,但如果您需要它在发布版本中工作,请将其删除(并确保在提交给Apple之前记得恢复它或删除此类别).
Swift 3/4版本为Nick Lockwood回答.
这仅用于测试/开发目的:
extension NSURLRequest {
#if DEBUG
static func allowsAnyHTTPSCertificate(forHost host: String) -> Bool {
return true
}
#endif
}
Run Code Online (Sandbox Code Playgroud)
在iOS 9中,所有无效或自签名证书的SSL连接都将失败.这是iOS 9.0或更高版本以及OS X 10.11及更高版本中新的App Transport Security功能的默认行为.
您可以Info.plist
通过在字典中设置NSAllowsArbitraryLoads
为覆盖此行为.但是,我建议仅为测试目的覆盖此设置.YES
NSAppTransportSecurity
有关信息,请参阅应用交通运输技术说明这里.
归档时间: |
|
查看次数: |
64107 次 |
最近记录: |