Metodo alternativo per privati del NSURLRequest “setAllowsAnyHTTPSCertificate: forHost:”?
-
18-09-2019 - |
Domanda
La mia applicazione per iPhone è stata respinta solo per l'utilizzo del (molto sicuro, a quanto pare) Metodo +setAllowsAnyHTTPSCertificate:forHost:
privato per NSURLRequest
. C'è un'API non privato di emulare questa funzionalità?
Soluzione
Sembra che ci sia un'API pubblica per questo;) Come usare NSURLConnection per la connessione con SSL per un CERT non attendibile?
Altri suggerimenti
In realtà, sto testando con 10.6.8 e questo codice funziona ancora - che sta utilizzando l'API private, ma controllando che il selettore esiste (myurl è il NSURL che sto cercando di caricare in una WebView o un NSURLConnection):
SEL selx = NSSelectorFromString(@"setAllowsAnyHTTPSCertificate:forHost:");
if ( [NSURLRequest respondsToSelector: selx] )
{
IMP fp;
fp = [NSURLRequest methodForSelector:selx];
(fp)([NSURLRequest class], selx, YES, [myurl host]);
}
Si noti che "@selector" non è stato utilizzato in modo che assolutamente tutti il lavoro sarebbe fatto in fase di esecuzione. Questo lo rende circa come sicuro e come nascosti dai controlli di Apple come può essere, soprattutto se si oscurare la stringa.
Una soluzione veramente stupido è quello di rendere il proprio metodo categoria:
@implementation NSURLRequest (IgnoreSSL)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host
{
return YES;
}
@end
Questo dovrebbe ottenere mediante controlli API private di Apple, ma è ancora la stessa cosa (usando un privato API non documentate [1] che rischia di rompersi in qualsiasi momento). In realtà, è peggio in quanto permette tutto, non solo tale host.
[1]:. Un'API privata che dovrebbe essere reso pubblico, ma un privato API, tuttavia,
setAllowsAnyHTTPSCertificate sembra essere ora supportato in OS X 10.6.6 del tutto.
Ho detto 10.6.6? Forse avrei dovuto dire "Snow Vista".
Non è una soluzione, ma un suggerimento. Avete pensato di usare ASIHttpRequest quadro per questo? Questo quadro è completo in tutti gli aspetti. Controllare la documentazione, forse può aiutare anche te.