我的iPhone应用程序被拒绝的唯一原因是使用了NSURLRequest
的私有方法+setAllowsAnyHTTPSCertificate:forHost:
(看起来非常安全)。有没有一个非私有的API来模拟这个功能?
发布于 2010-01-27 16:23:25
似乎有一个用于此的公共API ;) How to use NSURLConnection to connect with SSL for an untrusted cert?
发布于 2011-09-15 05:07:17
实际上,我正在使用10.6.8进行测试,这段代码仍然有效--它使用的是私有API,但会检查选择器是否存在(myurl是我试图加载到WebView或NSURLConnection中的NSURL ):
SEL selx = NSSelectorFromString(@"setAllowsAnyHTTPSCertificate:forHost:");
if ( [NSURLRequest respondsToSelector: selx] )
{
IMP fp;
fp = [NSURLRequest methodForSelector:selx];
(fp)([NSURLRequest class], selx, YES, [myurl host]);
}
请注意,没有使用"@selector“,因此所有工作都将在运行时完成。这使得它尽可能地安全和隐藏,不会被苹果公司检查到,特别是如果你模糊了字符串。
发布于 2010-01-05 05:10:10
一个非常愚蠢的变通方法是创建你自己的类别方法:
@implementation NSURLRequest (IgnoreSSL)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host
{
return YES;
}
@end
这应该可以通过苹果的私有应用程序接口检查,但它仍然是一样的(使用一个私有的,没有文档记录的API1,随时都可能被破解)。实际上,它更糟糕,因为它允许所有东西,而不仅仅是那个主机。
1:私有API,应该公有,但仍然是私有API。
https://stackoverflow.com/questions/2001565
复制相似问题