Mi aplicación para iPhone fue rechazada únicamente por usar el (privado, muy seguro) método privado +setAllowsAnyHTTPSCertificate:forHost:
para NSURLRequest
. ¿Hay una API no privada para emular esta funcionalidad?Método alternativo para el archivo privado "setAllowsAnyHTTPSCertificate: forHost:" de NSURLRequest
Método alternativo para el archivo privado "setAllowsAnyHTTPSCertificate: forHost:" de NSURLRequest
Respuesta
No parece haber una API pública para eso;) How to use NSURLConnection to connect with SSL for an untrusted cert?
¡Gracias! Es extraño que Google no apareció esto. – Michael
Una solución realmente estúpido es hacer que su propia categoría método:
@implementation NSURLRequest (IgnoreSSL)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host
{
return YES;
}
@end
Esto debe llegar a funcionar cheques API privadas de Apple, pero sigue siendo lo mismo (mediante una API privada, no documentada [1] que es susceptible de romperse en cualquier momento). En realidad, es peor porque permite todo, no solo ese host.
[1]: Se debe hacer pública una API privada que , pero una API privada sin embargo.
Por lo que sé, esto aún no pasará los controles de Apple, ya que parecen usar un análisis bastante simple basado únicamente en selectores, no su uso. –
@Mike: ¿Estás seguro? No estoy "usando" el selector, solo lo estoy redefiniendo. Son los internos de Apple lo que lo llaman. Por supuesto, esto no es del todo seguro, pero no veo cómo no pasaría los controles de Apple. – Michael
De esta forma definitivamente se rechazará tu aplicación. – Franklin
Tome un vistazo a este enlace: http://www.abstractec.co.uk/blog/iPhone.php?itemid=70
podría ser una mejor solución para usted que simplemente engañando al cheque API privada.
¿Es posible utilizar un NSURLConnection en lugar de un CFHTTPMessageRef? Preferiría que la descarga sea asincrónica. – Michael
No es una solución, sino una sugerencia. ¿Has pensado en usar ASIHttpRequest Framework para esto? Este marco está completo en todos los aspectos. Verifique la documentación, tal vez también pueda ayudarlo.
setAllowsAnyHTTPSCertificate parece ser ahora sin soporte en OS X 10.6.6 completo.
¿He dicho 10.6.6? Tal vez debería haber dicho "Snow Vista".
En realidad, estoy probando con 10.6.8 y este código todavía funciona: está usando la API privada pero verifica que el selector exista (myurl es el NSURL que intento cargar en una WebView o una NSURLConnection) :
SEL selx = NSSelectorFromString(@"setAllowsAnyHTTPSCertificate:forHost:");
if ([NSURLRequest respondsToSelector: selx])
{
IMP fp;
fp = [NSURLRequest methodForSelector:selx];
(fp)([NSURLRequest class], selx, YES, [myurl host]);
}
Tenga en cuenta que "@selector" no se utilizó de manera que absolutamente todo el trabajo se realiza en tiempo de ejecución. Eso lo hace tan seguro y tan oculto de los controles de Apple como puede ser, especialmente si oculta la cadena.
¡Funciona bien! Gracias – Chris
No es una solución recomendada: (1) no le da a su usuario la opción de aceptar o no. (2) Estás escribiendo en un foro público si Apple se da cuenta de que podrían hacerlo bien. (3) Ver la respuesta de Yonel: http://stackoverflow.com/a/2145367/818352 – George
Solo quería decir que esto funcionó para mí hasta que salió el 5S y el iPad Air - se cuelga aquí (en el elenco) en cualquiera de esos dispositivos. – Luke
- 1. Método de carga alternativo para Django FileField
- 2. Desmarcar RadioButton's - método alternativo
- 3. C# Método alternativo WPF OnPaint?
- 4. Método alternativo para PIVOTE - EN con soporte de subconsulta
- 5. Método privado llamado error
- 6. Crea una cookie para NSURLRequest?
- 7. Replicación de MySQL para el escenario alternativo
- 8. NSURLRequest configurar el encabezado HTTP
- 9. Hibernate 4.1Final alternativo para Hibernate.STRING
- 10. con NSURLRequest
- 11. Cómo especificar un método privado
- 12. Confundir "reemplazar un método privado"
- 13. alternativo para mysql_num_rows utilizando DOP
- 14. Método virtual privado en C++
- 15. Doxygen: ocultar el método privado/protegido ... y consejos
- 16. ¿Alguna manera de invocar un método privado?
- 17. Llamar a un método privado xxx usando self.xxx() desde otro método privado que da como resultado el error "método privado` xxx 'llamado "
- 18. NSURLRequest - URL de codificación para NSURLRequest Cuerpo POST (iPhone objetivo-C)
- 19. ¿Existe algún método alternativo para usar antes de la descarga en el safari móvil?
- 20. Interfaz privada vs. método privado: objetivo c
- 21. ¿Texto alternativo para UITableView vacío?
- 22. ¿Cómo crear un método de clase privado?
- 23. Anulación de un método privado con Reflection
- 24. NSURLRequest no envía cookies
- 25. ¿Cómo hacer una declaración directa para un método privado?
- 26. NSURLConnection/NSURLRequest gzip support
- 27. Cómo usar NSURLRequest/NSURLConnection para descargar un archivo mp3 a la aplicación?
- 28. usando Jasmines spyon con un método privado
- 29. Método privado en una interfaz C++?
- 30. Error: Intento llamar al método privado
¿Por qué quieres permitir certificados HTTPs no válidos en primer lugar? –
Hola ... su problema está resuelto, pero ¿para eso ha excluido el método anterior en su código fuente? –